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 <steveanton@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27634}
diff --git a/call/rtp_demuxer.cc b/call/rtp_demuxer.cc
index 23f605d..14725cf 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<RtpMid>(&mid)) {
+    sb << " MID=" << mid;
+  }
+  std::string rsid;
+  if (packet.GetExtension<RtpStreamId>(&rsid)) {
+    sb << " RSID=" << rsid;
+  }
+  std::string rrsid;
+  if (packet.GetExtension<RepairedRtpStreamId>(&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 0a8acc2..c815c47 100644
--- a/call/rtp_demuxer.h
+++ b/call/rtp_demuxer.h
@@ -88,6 +88,10 @@
   // 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 f7a27be3..e6129b5 100644
--- a/pc/rtp_transport.cc
+++ b/pc/rtp_transport.cc
@@ -196,7 +196,10 @@
   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() {