Index: talk/media/webrtc/webrtcmediaengine.cc |
diff --git a/talk/media/webrtc/webrtcmediaengine.cc b/talk/media/webrtc/webrtcmediaengine.cc |
index cf6a5cf2e59689fbaf877fcf7d69ab41eba78ef3..0f79edf4fbea631ff2fb28cd41e3118c541c09cc 100644 |
--- a/talk/media/webrtc/webrtcmediaengine.cc |
+++ b/talk/media/webrtc/webrtcmediaengine.cc |
@@ -68,4 +68,35 @@ MediaEngineInterface* WebRtcMediaEngineFactory::Create( |
return CreateWebRtcMediaEngine(adm, encoder_factory, decoder_factory); |
} |
+static const std::map<std::string, int> CreateBweExtensionPriorities() { |
+ std::map<std::string, int> extension_prios; |
+ extension_prios[kRtpTransportSequenceNumberHeaderExtension] = 0; |
+ extension_prios[kRtpAbsoluteSenderTimeHeaderExtension] = 1; |
+ extension_prios[kRtpTimestampOffsetHeaderExtension] = 2; |
+ return extension_prios; |
+} |
+const std::map<std::string, int> kBweExtensionPriorities = |
+ CreateBweExtensionPriorities(); |
pbos-webrtc
2015/10/29 14:16:22
Static initializer, not permitted. Can you make th
stefan-webrtc
2015/10/29 14:51:11
Done.
|
+ |
+std::vector<RtpHeaderExtension> FilterOverlappingRtpExtensions( |
+ const std::vector<RtpHeaderExtension>& extensions, |
+ const std::map<std::string, int>& extension_prios) { |
+ if (extensions.empty()) |
+ return std::vector<RtpHeaderExtension>(); |
+ std::vector<RtpHeaderExtension> filtered; |
+ std::map<int, const RtpHeaderExtension*> sorted; |
+ for (auto& extension : extensions) { |
+ auto it = extension_prios.find(extension.uri); |
+ if (it == extension_prios.end()) { |
+ filtered.push_back(extension); |
+ continue; |
+ } else { |
+ sorted[it->second] = &extension; |
+ } |
+ } |
+ if (!sorted.empty()) |
+ filtered.push_back(*sorted.begin()->second); |
+ return filtered; |
+} |
+ |
} // namespace cricket |