Simplify creating RtpHeaderExtensionMap in EventLogAnalyzer
RtpHeaderExtensionMap constructor accept array view instead of initializer_list
Remove now unused RtpHeaderExtensionMap::Erase

BUG=webrtc:1994

Review-Url: https://codereview.webrtc.org/2501893004
Cr-Commit-Position: refs/heads/master@{#15090}
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extension.cc b/webrtc/modules/rtp_rtcp/source/rtp_header_extension.cc
index b7c7306..67e62c2 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_header_extension.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extension.cc
@@ -72,7 +72,7 @@
 }
 
 RtpHeaderExtensionMap::RtpHeaderExtensionMap(
-    std::initializer_list<RtpExtension> extensions)
+    rtc::ArrayView<const RtpExtension> extensions)
     : RtpHeaderExtensionMap() {
   for (const RtpExtension& extension : extensions)
     RegisterByUri(extension.id, extension.uri);
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h b/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h
index a8591c7..1ec411d 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h
+++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extension.h
@@ -11,9 +11,9 @@
 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSION_H_
 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSION_H_
 
-#include <initializer_list>
 #include <string>
 
+#include "webrtc/base/array_view.h"
 #include "webrtc/base/basictypes.h"
 #include "webrtc/base/checks.h"
 #include "webrtc/config.h"
@@ -44,7 +44,7 @@
   static constexpr uint8_t kInvalidId = 0;
 
   RtpHeaderExtensionMap();
-  RtpHeaderExtensionMap(std::initializer_list<RtpExtension>);
+  explicit RtpHeaderExtensionMap(rtc::ArrayView<const RtpExtension> extensions);
 
   template <typename Extension>
   bool Register(uint8_t id) {
@@ -73,7 +73,6 @@
   size_t GetTotalLengthInBytes() const;
 
   // TODO(danilchap): Remove use of the functions below.
-  void Erase() { *this = RtpHeaderExtensionMap(); }
   int32_t Register(RTPExtensionType type, uint8_t id) {
     return RegisterByType(id, type) ? 0 : -1;
   }
@@ -96,6 +95,7 @@
   RTPExtensionType types_[kMaxId + 1];
   uint8_t ids_[kRtpExtensionNumberOfExtensions];
 };
+
 }  // namespace webrtc
 
 #endif  // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSION_H_
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extension_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_header_extension_unittest.cc
index 3794e83..81f0526 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_header_extension_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extension_unittest.cc
@@ -8,6 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <vector>
+
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
@@ -48,8 +50,9 @@
 }
 
 TEST(RtpHeaderExtensionTest, RegisterDuringContruction) {
-  const RtpHeaderExtensionMap map = {{TransmissionOffset::kUri, 1},
-                                     {AbsoluteSendTime::kUri, 3}};
+  const std::vector<RtpExtension> config = {{TransmissionOffset::kUri, 1},
+                                            {AbsoluteSendTime::kUri, 3}};
+  const RtpHeaderExtensionMap map(config);
 
   EXPECT_EQ(1, map.GetId(TransmissionOffset::kId));
   EXPECT_EQ(3, map.GetId(AbsoluteSendTime::kId));
diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc
index bf97380..d68ad81 100644
--- a/webrtc/tools/event_log_visualizer/analyzer.cc
+++ b/webrtc/tools/event_log_visualizer/analyzer.cc
@@ -28,6 +28,7 @@
 #include "webrtc/modules/congestion_controller/include/congestion_controller.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
+#include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
@@ -91,16 +92,6 @@
   return difference;
 }
 
-void RegisterHeaderExtensions(
-    const std::vector<webrtc::RtpExtension>& extensions,
-    webrtc::RtpHeaderExtensionMap* extension_map) {
-  extension_map->Erase();
-  for (const webrtc::RtpExtension& extension : extensions) {
-    extension_map->Register(webrtc::StringToRtpExtensionType(extension.uri),
-                            extension.id);
-  }
-}
-
 // Return default values for header extensions, to use on streams without stored
 // mapping data. Currently this only applies to audio streams, since the mapping
 // is not stored in the event log.
@@ -108,11 +99,8 @@
 //             audio streams. Tracking bug: webrtc:6399
 webrtc::RtpHeaderExtensionMap GetDefaultHeaderExtensionMap() {
   webrtc::RtpHeaderExtensionMap default_map;
-  default_map.Register(
-      webrtc::StringToRtpExtensionType(webrtc::RtpExtension::kAudioLevelUri),
-      webrtc::RtpExtension::kAudioLevelDefaultId);
-  default_map.Register(
-      webrtc::StringToRtpExtensionType(webrtc::RtpExtension::kAbsSendTimeUri),
+  default_map.Register<AudioLevel>(webrtc::RtpExtension::kAudioLevelDefaultId);
+  default_map.Register<AbsoluteSendTime>(
       webrtc::RtpExtension::kAbsSendTimeDefaultId);
   return default_map;
 }
@@ -321,13 +309,12 @@
         VideoReceiveStream::Config config(nullptr);
         parsed_log_.GetVideoReceiveConfig(i, &config);
         StreamId stream(config.rtp.remote_ssrc, kIncomingPacket);
-        RegisterHeaderExtensions(config.rtp.extensions,
-                                 &extension_maps[stream]);
+        extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions);
         video_ssrcs_.insert(stream);
         for (auto kv : config.rtp.rtx) {
           StreamId rtx_stream(kv.second.ssrc, kIncomingPacket);
-          RegisterHeaderExtensions(config.rtp.extensions,
-                                   &extension_maps[rtx_stream]);
+          extension_maps[rtx_stream] =
+              RtpHeaderExtensionMap(config.rtp.extensions);
           video_ssrcs_.insert(rtx_stream);
           rtx_ssrcs_.insert(rtx_stream);
         }
@@ -338,14 +325,13 @@
         parsed_log_.GetVideoSendConfig(i, &config);
         for (auto ssrc : config.rtp.ssrcs) {
           StreamId stream(ssrc, kOutgoingPacket);
-          RegisterHeaderExtensions(config.rtp.extensions,
-                                   &extension_maps[stream]);
+          extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions);
           video_ssrcs_.insert(stream);
         }
         for (auto ssrc : config.rtp.rtx.ssrcs) {
           StreamId rtx_stream(ssrc, kOutgoingPacket);
-          RegisterHeaderExtensions(config.rtp.extensions,
-                                   &extension_maps[rtx_stream]);
+          extension_maps[rtx_stream] =
+              RtpHeaderExtensionMap(config.rtp.extensions);
           video_ssrcs_.insert(rtx_stream);
           rtx_ssrcs_.insert(rtx_stream);
         }
@@ -355,8 +341,7 @@
         AudioReceiveStream::Config config;
         parsed_log_.GetAudioReceiveConfig(i, &config);
         StreamId stream(config.rtp.remote_ssrc, kIncomingPacket);
-        RegisterHeaderExtensions(config.rtp.extensions,
-                                 &extension_maps[stream]);
+        extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions);
         audio_ssrcs_.insert(stream);
         break;
       }
@@ -364,8 +349,7 @@
         AudioSendStream::Config config(nullptr);
         parsed_log_.GetAudioSendConfig(i, &config);
         StreamId stream(config.rtp.ssrc, kOutgoingPacket);
-        RegisterHeaderExtensions(config.rtp.extensions,
-                                 &extension_maps[stream]);
+        extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions);
         audio_ssrcs_.insert(stream);
         break;
       }