red: remove hardcoded parameters in favor of taking them from the codec

and make it less opus-specific.

BUG=None

Change-Id: I6fe2975ba6e45a3758fedc5b950de90e8d9df362
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/375436
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43846}
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index a756869..f8c2371 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -413,8 +413,8 @@
       if (allocate_pt) {
         std::string red_fmtp =
             rtc::ToString(codec.id) + "/" + rtc::ToString(codec.id);
-        cricket::Codec red_codec =
-            CreateAudioCodec({kRedCodecName, 48000, 2, {{"", red_fmtp}}});
+        cricket::Codec red_codec = CreateAudioCodec(
+            {kRedCodecName, codec.clockrate, codec.channels, {{"", red_fmtp}}});
         red_codec.id = pt_mapper.SuggestMapping(red_codec, nullptr).value();
         out.push_back(red_codec);
       } else {
diff --git a/pc/media_session.cc b/pc/media_session.cc
index c5c262a..755d6fe 100644
--- a/pc/media_session.cc
+++ b/pc/media_session.cc
@@ -434,7 +434,7 @@
     webrtc::PayloadTypeSuggester* pt_suggester,
     const std::string& mid,
     std::vector<Codec>& codecs) {
-  int opus_codec = Codec::kIdNotSet;
+  int codec_payload_type = Codec::kIdNotSet;
   for (cricket::Codec& codec : codecs) {
     if (codec.id == Codec::kIdNotSet) {
       // Add payload types to codecs, if needed
@@ -449,18 +449,18 @@
     }
     // record first Opus codec id
     if (absl::EqualsIgnoreCase(codec.name, kOpusCodecName) &&
-        opus_codec == Codec::kIdNotSet) {
-      opus_codec = codec.id;
+        codec_payload_type == Codec::kIdNotSet) {
+      codec_payload_type = codec.id;
     }
   }
-  if (opus_codec != Codec::kIdNotSet) {
+  if (codec_payload_type != Codec::kIdNotSet) {
     for (cricket::Codec& codec : codecs) {
       if (codec.type == Codec::Type::kAudio &&
           absl::EqualsIgnoreCase(codec.name, kRedCodecName)) {
         if (codec.params.empty()) {
           char buffer[100];
           rtc::SimpleStringBuilder param(buffer);
-          param << opus_codec << "/" << opus_codec;
+          param << codec_payload_type << "/" << codec_payload_type;
           RTC_LOG(LS_ERROR) << "DEBUG: Setting RED param to " << param.str();
           codec.SetParam(kCodecParamNotInNameValueFormat, param.str());
         }