Skip to content

Commit 60c01cc

Browse files
fippoWebRTC LUCI CQ
authored andcommitted
setCodecPreferences: dont insert red codec twice
this could happen if setCodecPreferences is used to prefer red over opus as it is done for red+opus. BUG=webrtc:13287 Change-Id: I3d61cd8f1a364572bc531a75dcc239c3919138cc Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237800 Reviewed-by: Harald Alvestrand <[email protected]> Commit-Queue: Philipp Hancke <[email protected]> Cr-Commit-Position: refs/heads/main@{#35344}
1 parent 62bb58f commit 60c01cc

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

pc/media_session.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,14 +1084,20 @@ static Codecs MatchCodecPreference(
10841084
break;
10851085
}
10861086
} else if (IsRedCodec(codec)) {
1087+
// For RED, do not insert the codec again if it was already
1088+
// inserted. audio/red for opus gets enabled by having RED before
1089+
// the primary codec.
10871090
const auto fmtp =
10881091
codec.params.find(cricket::kCodecParamNotInNameValueFormat);
10891092
if (fmtp != codec.params.end()) {
10901093
std::vector<std::string> redundant_payloads;
10911094
rtc::split(fmtp->second, '/', &redundant_payloads);
10921095
if (redundant_payloads.size() > 0 &&
10931096
redundant_payloads[0] == id) {
1094-
filtered_codecs.push_back(codec);
1097+
if (std::find(filtered_codecs.begin(), filtered_codecs.end(),
1098+
codec) == filtered_codecs.end()) {
1099+
filtered_codecs.push_back(codec);
1100+
}
10951101
break;
10961102
}
10971103
}

0 commit comments

Comments
 (0)