Remove Codec template from RtpParameters and helper functions

BUG=webrtc:15214

Change-Id: I3874c4a5089216dab3d072df7854040d5d05bcc9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/313500
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40492}
diff --git a/media/base/media_channel.h b/media/base/media_channel.h
index 9657f1f..92c7dff 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -811,7 +811,6 @@
   bool remote_estimate = false;
 };
 
-template <class Codec>
 struct RtpParameters {
   virtual ~RtpParameters() = default;
 
@@ -845,8 +844,7 @@
 
 // TODO(deadbeef): Rename to RtpSenderParameters, since they're intended to
 // encapsulate all the parameters needed for an RtpSender.
-template <class Codec>
-struct RtpSendParameters : RtpParameters<Codec> {
+struct RtpSendParameters : RtpParameters {
   int max_bandwidth_bps = -1;
   // This is the value to be sent in the MID RTP header extension (if the header
   // extension in included in the list of extensions).
@@ -855,7 +853,7 @@
 
  protected:
   std::map<std::string, std::string> ToStringMap() const override {
-    auto params = RtpParameters<Codec>::ToStringMap();
+    auto params = RtpParameters::ToStringMap();
     params["max_bandwidth_bps"] = rtc::ToString(max_bandwidth_bps);
     params["mid"] = (mid.empty() ? "<not set>" : mid);
     params["extmap-allow-mixed"] = extmap_allow_mixed ? "true" : "false";
@@ -863,7 +861,7 @@
   }
 };
 
-struct AudioSendParameters : RtpSendParameters<AudioCodec> {
+struct AudioSendParameters : RtpSendParameters {
   AudioSendParameters();
   ~AudioSendParameters() override;
   AudioOptions options;
@@ -872,7 +870,7 @@
   std::map<std::string, std::string> ToStringMap() const override;
 };
 
-struct AudioRecvParameters : RtpParameters<AudioCodec> {};
+struct AudioRecvParameters : RtpParameters {};
 
 class VoiceMediaSendChannelInterface : public MediaSendChannelInterface {
  public:
@@ -924,7 +922,7 @@
 
 // TODO(deadbeef): Rename to VideoSenderParameters, since they're intended to
 // encapsulate all the parameters needed for a video RtpSender.
-struct VideoSendParameters : RtpSendParameters<VideoCodec> {
+struct VideoSendParameters : RtpSendParameters {
   VideoSendParameters();
   ~VideoSendParameters() override;
   // Use conference mode? This flag comes from the remote
@@ -941,7 +939,7 @@
 
 // TODO(deadbeef): Rename to VideoReceiverParameters, since they're intended to
 // encapsulate all the parameters needed for a video RtpReceiver.
-struct VideoRecvParameters : RtpParameters<VideoCodec> {};
+struct VideoRecvParameters : RtpParameters {};
 
 class VideoMediaSendChannelInterface : public MediaSendChannelInterface {
  public:
diff --git a/media/base/media_channel_impl.cc b/media/base/media_channel_impl.cc
index 9bfb0f0..2f4383d 100644
--- a/media/base/media_channel_impl.cc
+++ b/media/base/media_channel_impl.cc
@@ -171,7 +171,7 @@
 AudioSendParameters::~AudioSendParameters() = default;
 
 std::map<std::string, std::string> AudioSendParameters::ToStringMap() const {
-  auto params = RtpSendParameters<AudioCodec>::ToStringMap();
+  auto params = RtpSendParameters::ToStringMap();
   params["options"] = options.ToString();
   return params;
 }
@@ -180,7 +180,7 @@
 VideoSendParameters::~VideoSendParameters() = default;
 
 std::map<std::string, std::string> VideoSendParameters::ToStringMap() const {
-  auto params = RtpSendParameters<VideoCodec>::ToStringMap();
+  auto params = RtpSendParameters::ToStringMap();
   params["conference_mode"] = (conference_mode ? "yes" : "no");
   return params;
 }
diff --git a/pc/channel.cc b/pc/channel.cc
index 05c4174..53a9a10 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -82,7 +82,7 @@
     const MediaContentDescriptionImpl<Codec>* desc,
     const RtpHeaderExtensions& extensions,
     bool is_stream_active,
-    RtpParameters<Codec>* params) {
+    RtpParameters* params) {
   params->is_stream_active = is_stream_active;
   params->codecs = desc->codecs();
   // TODO(bugs.webrtc.org/11513): See if we really need
@@ -98,7 +98,7 @@
 void RtpSendParametersFromMediaDescription(
     const MediaContentDescriptionImpl<Codec>* desc,
     webrtc::RtpExtension::Filter extensions_filter,
-    RtpSendParameters<Codec>* send_params) {
+    RtpSendParameters* send_params) {
   RtpHeaderExtensions extensions =
       webrtc::RtpExtension::DeduplicateHeaderExtensions(
           desc->rtp_header_extensions(), extensions_filter);
diff --git a/pc/media_session.cc b/pc/media_session.cc
index f911723..b672a52 100644
--- a/pc/media_session.cc
+++ b/pc/media_session.cc
@@ -113,6 +113,52 @@
 
 namespace cricket {
 
+static bool IsRtxCodec(const Codec& codec) {
+  return absl::EqualsIgnoreCase(codec.name, kRtxCodecName);
+}
+
+static bool IsRtxCodec(const webrtc::RtpCodecCapability& capability) {
+  return absl::EqualsIgnoreCase(capability.name, kRtxCodecName);
+}
+
+static bool ContainsRtxCodec(const std::vector<Codec>& codecs) {
+  for (const auto& codec : codecs) {
+    if (IsRtxCodec(codec)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+static bool IsRedCodec(const Codec& codec) {
+  return absl::EqualsIgnoreCase(codec.name, kRedCodecName);
+}
+
+static bool IsRedCodec(const webrtc::RtpCodecCapability& capability) {
+  return absl::EqualsIgnoreCase(capability.name, kRedCodecName);
+}
+
+static bool IsFlexfecCodec(const Codec& codec) {
+  return absl::EqualsIgnoreCase(codec.name, kFlexfecCodecName);
+}
+
+static bool ContainsFlexfecCodec(const std::vector<Codec>& codecs) {
+  for (const auto& codec : codecs) {
+    if (IsFlexfecCodec(codec)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+static bool IsUlpfecCodec(const Codec& codec) {
+  return absl::EqualsIgnoreCase(codec.name, kUlpfecCodecName);
+}
+
+static bool IsComfortNoiseCodec(const Codec& codec) {
+  return absl::EqualsIgnoreCase(codec.name, kComfortNoiseCodecName);
+}
+
 static RtpTransceiverDirection NegotiateRtpTransceiverDirection(
     RtpTransceiverDirection offer,
     RtpTransceiverDirection wants) {
@@ -610,51 +656,6 @@
   return active_contents;
 }
 
-template <class C>
-static bool ContainsRtxCodec(const std::vector<C>& codecs) {
-  for (const auto& codec : codecs) {
-    if (IsRtxCodec(codec)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-template <class C>
-static bool IsRedCodec(const C& codec) {
-  return absl::EqualsIgnoreCase(codec.name, kRedCodecName);
-}
-
-template <class C>
-static bool IsRtxCodec(const C& codec) {
-  return absl::EqualsIgnoreCase(codec.name, kRtxCodecName);
-}
-
-template <class C>
-static bool ContainsFlexfecCodec(const std::vector<C>& codecs) {
-  for (const auto& codec : codecs) {
-    if (IsFlexfecCodec(codec)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-template <class C>
-static bool IsFlexfecCodec(const C& codec) {
-  return absl::EqualsIgnoreCase(codec.name, kFlexfecCodecName);
-}
-
-template <class C>
-static bool IsUlpfecCodec(const C& codec) {
-  return absl::EqualsIgnoreCase(codec.name, kUlpfecCodecName);
-}
-
-template <class C>
-static bool IsComfortNoiseCodec(const C& codec) {
-  return absl::EqualsIgnoreCase(codec.name, kComfortNoiseCodecName);
-}
-
 // Create a media content to be offered for the given `sender_options`,
 // according to the given options.rtcp_mux, session_options.is_muc, codecs,
 // secure_transport, crypto, and current_streams. If we don't currently have