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