From 4b87d7ac2a0c210f3d2747c29499cf9714744c13 Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Thu, 27 Jul 2023 12:49:00 +0200 Subject: [PATCH] Remove Codec template from RtpParameters and helper functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG=webrtc:15214 Change-Id: I3874c4a5089216dab3d072df7854040d5d05bcc9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/313500 Reviewed-by: Henrik Boström Reviewed-by: Florent Castelli Commit-Queue: Philipp Hancke Cr-Commit-Position: refs/heads/main@{#40492} --- media/base/media_channel.h | 14 +++-- media/base/media_channel_impl.cc | 4 +- pc/channel.cc | 4 +- pc/media_session.cc | 91 ++++++++++++++++---------------- 4 files changed, 56 insertions(+), 57 deletions(-) diff --git a/media/base/media_channel.h b/media/base/media_channel.h index 9657f1fbe5..92c7dff203 100644 --- a/media/base/media_channel.h +++ b/media/base/media_channel.h @@ -811,7 +811,6 @@ struct RtcpParameters { bool remote_estimate = false; }; -template struct RtpParameters { virtual ~RtpParameters() = default; @@ -845,8 +844,7 @@ struct RtpParameters { // TODO(deadbeef): Rename to RtpSenderParameters, since they're intended to // encapsulate all the parameters needed for an RtpSender. -template -struct RtpSendParameters : RtpParameters { +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 @@ struct RtpSendParameters : RtpParameters { protected: std::map ToStringMap() const override { - auto params = RtpParameters::ToStringMap(); + auto params = RtpParameters::ToStringMap(); params["max_bandwidth_bps"] = rtc::ToString(max_bandwidth_bps); params["mid"] = (mid.empty() ? "" : mid); params["extmap-allow-mixed"] = extmap_allow_mixed ? "true" : "false"; @@ -863,7 +861,7 @@ struct RtpSendParameters : RtpParameters { } }; -struct AudioSendParameters : RtpSendParameters { +struct AudioSendParameters : RtpSendParameters { AudioSendParameters(); ~AudioSendParameters() override; AudioOptions options; @@ -872,7 +870,7 @@ struct AudioSendParameters : RtpSendParameters { std::map ToStringMap() const override; }; -struct AudioRecvParameters : RtpParameters {}; +struct AudioRecvParameters : RtpParameters {}; class VoiceMediaSendChannelInterface : public MediaSendChannelInterface { public: @@ -924,7 +922,7 @@ class VoiceMediaReceiveChannelInterface : public MediaReceiveChannelInterface { // TODO(deadbeef): Rename to VideoSenderParameters, since they're intended to // encapsulate all the parameters needed for a video RtpSender. -struct VideoSendParameters : RtpSendParameters { +struct VideoSendParameters : RtpSendParameters { VideoSendParameters(); ~VideoSendParameters() override; // Use conference mode? This flag comes from the remote @@ -941,7 +939,7 @@ struct VideoSendParameters : RtpSendParameters { // TODO(deadbeef): Rename to VideoReceiverParameters, since they're intended to // encapsulate all the parameters needed for a video RtpReceiver. -struct VideoRecvParameters : RtpParameters {}; +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 9bfb0f037b..2f4383db38 100644 --- a/media/base/media_channel_impl.cc +++ b/media/base/media_channel_impl.cc @@ -171,7 +171,7 @@ AudioSendParameters::AudioSendParameters() = default; AudioSendParameters::~AudioSendParameters() = default; std::map AudioSendParameters::ToStringMap() const { - auto params = RtpSendParameters::ToStringMap(); + auto params = RtpSendParameters::ToStringMap(); params["options"] = options.ToString(); return params; } @@ -180,7 +180,7 @@ VideoSendParameters::VideoSendParameters() = default; VideoSendParameters::~VideoSendParameters() = default; std::map VideoSendParameters::ToStringMap() const { - auto params = RtpSendParameters::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 05c41748ff..53a9a106cc 100644 --- a/pc/channel.cc +++ b/pc/channel.cc @@ -82,7 +82,7 @@ void RtpParametersFromMediaDescription( const MediaContentDescriptionImpl* desc, const RtpHeaderExtensions& extensions, bool is_stream_active, - RtpParameters* 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 @@ template void RtpSendParametersFromMediaDescription( const MediaContentDescriptionImpl* desc, webrtc::RtpExtension::Filter extensions_filter, - RtpSendParameters* 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 f9117237bf..b672a52951 100644 --- a/pc/media_session.cc +++ b/pc/media_session.cc @@ -113,6 +113,52 @@ cricket::RtpHeaderExtensions UnstoppedOrPresentRtpHeaderExtensions( 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& 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& 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 @@ static std::vector GetActiveContents( return active_contents; } -template -static bool ContainsRtxCodec(const std::vector& codecs) { - for (const auto& codec : codecs) { - if (IsRtxCodec(codec)) { - return true; - } - } - return false; -} - -template -static bool IsRedCodec(const C& codec) { - return absl::EqualsIgnoreCase(codec.name, kRedCodecName); -} - -template -static bool IsRtxCodec(const C& codec) { - return absl::EqualsIgnoreCase(codec.name, kRtxCodecName); -} - -template -static bool ContainsFlexfecCodec(const std::vector& codecs) { - for (const auto& codec : codecs) { - if (IsFlexfecCodec(codec)) { - return true; - } - } - return false; -} - -template -static bool IsFlexfecCodec(const C& codec) { - return absl::EqualsIgnoreCase(codec.name, kFlexfecCodecName); -} - -template -static bool IsUlpfecCodec(const C& codec) { - return absl::EqualsIgnoreCase(codec.name, kUlpfecCodecName); -} - -template -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