Fix list of resiliency mechanisms in setCodecPreferences

Add ulpfec and flexfec to list of resiliency mechanisms taken
into account and in general exclude Comfort Noise (CN) from media
codecs.

Also introduce RtpCodecCapability::IsMediaCodec & ::IsResiliencyCodec
behaving like the MediaCodec methods.

BUG=webrtc:15396

Change-Id: I79041898928190bfdd33a06d8f6975d7556c46b1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/330424
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41485}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index d92962c..6cec297 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -508,6 +508,7 @@
     ":array_view",
     ":priority",
     ":rtp_transceiver_direction",
+    "../media:media_constants",
     "../rtc_base:checks",
     "../rtc_base:stringutils",
     "../rtc_base/system:rtc_export",
diff --git a/api/rtp_parameters.cc b/api/rtp_parameters.cc
index 54132bc..3ff4b58 100644
--- a/api/rtp_parameters.cc
+++ b/api/rtp_parameters.cc
@@ -15,6 +15,7 @@
 #include <utility>
 
 #include "api/array_view.h"
+#include "media/base/media_constants.h"
 #include "rtc_base/strings/string_builder.h"
 
 namespace webrtc {
@@ -47,6 +48,14 @@
 RtpCodec::RtpCodec() = default;
 RtpCodec::RtpCodec(const RtpCodec&) = default;
 RtpCodec::~RtpCodec() = default;
+bool RtpCodec::IsResiliencyCodec() const {
+  return name == cricket::kRtxCodecName || name == cricket::kRedCodecName ||
+         name == cricket::kUlpfecCodecName ||
+         name == cricket::kFlexfecCodecName;
+}
+bool RtpCodec::IsMediaCodec() const {
+  return !IsResiliencyCodec() && name != cricket::kComfortNoiseCodecName;
+}
 RtpCodecCapability::RtpCodecCapability() = default;
 RtpCodecCapability::~RtpCodecCapability() = default;
 
diff --git a/api/rtp_parameters.h b/api/rtp_parameters.h
index e78cc66..025817c 100644
--- a/api/rtp_parameters.h
+++ b/api/rtp_parameters.h
@@ -167,6 +167,8 @@
            parameters == o.parameters;
   }
   bool operator!=(const RtpCodec& o) const { return !(*this == o); }
+  bool IsResiliencyCodec() const;
+  bool IsMediaCodec() const;
 };
 
 // RtpCodecCapability is to RtpCodecParameters as RtpCapabilities is to