Index: webrtc/call/rtp_demuxer.cc |
diff --git a/webrtc/call/rtp_demuxer.cc b/webrtc/call/rtp_demuxer.cc |
index aea414e08dfc2a162691a69171be0b7aab909ce3..889cde0c8445466ab6cfdc9e91fae7552c012b00 100644 |
--- a/webrtc/call/rtp_demuxer.cc |
+++ b/webrtc/call/rtp_demuxer.cc |
@@ -12,6 +12,20 @@ |
#include "webrtc/call/rtp_demuxer.h" |
#include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" |
+namespace { |
danilchap
2017/05/24 13:45:43
prefer to put anonymous namespace inside namespace
|
+ |
+template <typename key_t, typename val_t> |
danilchap
2017/05/24 13:45:42
may be typename Key, typename Value
"Template para
|
+bool MultimapAssociationExists(std::multimap<key_t, val_t> multimap, |
danilchap
2017/05/24 13:45:42
const mutlimap<...>&
|
+ key_t key, |
+ val_t val) { |
+ auto it_range = multimap.equal_range(key); |
+ using ref_t = typename std::multimap<key_t, val_t>::const_reference; |
+ return std::any_of(it_range.first, it_range.second, |
+ [val](ref_t elem) { return elem.second == val; }); |
+} |
+ |
+} // namespace |
+ |
namespace webrtc { |
RtpDemuxer::RtpDemuxer() {} |
@@ -22,6 +36,7 @@ RtpDemuxer::~RtpDemuxer() { |
void RtpDemuxer::AddSink(uint32_t ssrc, RtpPacketSinkInterface* sink) { |
RTC_DCHECK(sink); |
+ RTC_DCHECK(!MultimapAssociationExists(sinks_, ssrc, sink)); |
sinks_.emplace(ssrc, sink); |
} |