Partial revert: "Use unordered map in RtpDemuxer"
While the savings were positive in Media Servers, there was a regression
in some scenarios (crbug.com/webrtc/12718) so let's revert it.
This partially reverts commit 553fd3220b7b1a476af6759b27b3a274677d21e3.
Bug: webrtc:12718
Change-Id: If9252fd996ffc5efd7609eb4c7c0e7f001893676
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220103
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34117}
diff --git a/call/rtp_demuxer.h b/call/rtp_demuxer.h
index 00c0508..b71c2bc 100644
--- a/call/rtp_demuxer.h
+++ b/call/rtp_demuxer.h
@@ -14,12 +14,9 @@
#include <map>
#include <set>
#include <string>
-#include <unordered_map>
#include <utility>
#include <vector>
-#include "rtc_base/hash.h"
-
namespace webrtc {
class RtpPacketReceived;
@@ -171,14 +168,12 @@
// Note: Mappings are only modified by AddSink/RemoveSink (except for
// SSRC mapping which receives all MID, payload type, or RSID to SSRC bindings
// discovered when demuxing packets).
- std::unordered_map<std::string, RtpPacketSinkInterface*> sink_by_mid_;
- std::unordered_map<uint32_t, RtpPacketSinkInterface*> sink_by_ssrc_;
- std::unordered_multimap<uint8_t, RtpPacketSinkInterface*> sinks_by_pt_;
- std::unordered_map<std::pair<std::string, std::string>,
- RtpPacketSinkInterface*,
- webrtc::PairHash>
+ std::map<std::string, RtpPacketSinkInterface*> sink_by_mid_;
+ std::map<uint32_t, RtpPacketSinkInterface*> sink_by_ssrc_;
+ std::multimap<uint8_t, RtpPacketSinkInterface*> sinks_by_pt_;
+ std::map<std::pair<std::string, std::string>, RtpPacketSinkInterface*>
sink_by_mid_and_rsid_;
- std::unordered_map<std::string, RtpPacketSinkInterface*> sink_by_rsid_;
+ std::map<std::string, RtpPacketSinkInterface*> sink_by_rsid_;
// Tracks all the MIDs that have been identified in added criteria. Used to
// determine if a packet should be dropped right away because the MID is
@@ -189,8 +184,8 @@
// received.
// This is stored separately from the sink mappings because if a sink is
// removed we want to still remember these associations.
- std::unordered_map<uint32_t, std::string> mid_by_ssrc_;
- std::unordered_map<uint32_t, std::string> rsid_by_ssrc_;
+ std::map<uint32_t, std::string> mid_by_ssrc_;
+ std::map<uint32_t, std::string> rsid_by_ssrc_;
// Adds a binding from the SSRC to the given sink.
void AddSsrcSinkBinding(uint32_t ssrc, RtpPacketSinkInterface* sink);