Chromium Code Reviews| 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); |
| } |