Remove multiple RTX codec entries in GetRtpReceiver/SenderCapabilities
The spec says there should only be a single entry with no parameters. Bug: webrtc:9970 Change-Id: I8b55f10b8cb795021269827c6e0e9f12ab86a3c9 Reviewed-on: https://webrtc-review.googlesource.com/c/109588 Commit-Queue: Steve Anton <steveanton@webrtc.org> Reviewed-by: Steve Anton <steveanton@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25550}
This commit is contained in:

committed by
Commit Bot

parent
75de46a966
commit
5473a45688
@ -396,6 +396,7 @@ RtpCapabilities ToRtpCapabilities(
|
||||
bool have_red = false;
|
||||
bool have_ulpfec = false;
|
||||
bool have_flexfec = false;
|
||||
bool have_rtx = false;
|
||||
for (const C& cricket_codec : cricket_codecs) {
|
||||
if (cricket_codec.name == cricket::kRedCodecName) {
|
||||
have_red = true;
|
||||
@ -403,8 +404,19 @@ RtpCapabilities ToRtpCapabilities(
|
||||
have_ulpfec = true;
|
||||
} else if (cricket_codec.name == cricket::kFlexfecCodecName) {
|
||||
have_flexfec = true;
|
||||
} else if (cricket_codec.name == cricket::kRtxCodecName) {
|
||||
if (have_rtx) {
|
||||
// There should only be one RTX codec entry
|
||||
continue;
|
||||
}
|
||||
capabilities.codecs.push_back(ToRtpCodecCapability(cricket_codec));
|
||||
have_rtx = true;
|
||||
}
|
||||
auto codec_capability = ToRtpCodecCapability(cricket_codec);
|
||||
if (cricket_codec.name == cricket::kRtxCodecName) {
|
||||
// RTX codec should not have any parameter
|
||||
codec_capability.parameters.clear();
|
||||
}
|
||||
capabilities.codecs.push_back(codec_capability);
|
||||
}
|
||||
for (const RtpExtension& cricket_extension : cricket_extensions) {
|
||||
capabilities.header_extensions.emplace_back(cricket_extension.uri,
|
||||
|
@ -574,11 +574,23 @@ TEST(RtpParametersConversionTest, ToRtpCapabilities) {
|
||||
flexfec.id = 102;
|
||||
flexfec.clockrate = 90000;
|
||||
|
||||
cricket::VideoCodec rtx;
|
||||
rtx.name = "rtx";
|
||||
rtx.id = 104;
|
||||
rtx.params.insert({"apt", "101"});
|
||||
|
||||
cricket::VideoCodec rtx2;
|
||||
rtx2.name = "rtx";
|
||||
rtx2.id = 105;
|
||||
rtx2.params.insert({"apt", "109"});
|
||||
|
||||
RtpCapabilities capabilities = ToRtpCapabilities<cricket::VideoCodec>(
|
||||
{vp8, ulpfec}, {{"uri", 1}, {"uri2", 3}});
|
||||
ASSERT_EQ(2u, capabilities.codecs.size());
|
||||
{vp8, ulpfec, rtx, rtx2}, {{"uri", 1}, {"uri2", 3}});
|
||||
ASSERT_EQ(3u, capabilities.codecs.size());
|
||||
EXPECT_EQ("VP8", capabilities.codecs[0].name);
|
||||
EXPECT_EQ("ulpfec", capabilities.codecs[1].name);
|
||||
EXPECT_EQ("rtx", capabilities.codecs[2].name);
|
||||
EXPECT_EQ(0u, capabilities.codecs[2].parameters.size());
|
||||
ASSERT_EQ(2u, capabilities.header_extensions.size());
|
||||
EXPECT_EQ("uri", capabilities.header_extensions[0].uri);
|
||||
EXPECT_EQ(1, capabilities.header_extensions[0].preferred_id);
|
||||
@ -587,8 +599,8 @@ TEST(RtpParametersConversionTest, ToRtpCapabilities) {
|
||||
EXPECT_EQ(0u, capabilities.fec.size());
|
||||
|
||||
capabilities = ToRtpCapabilities<cricket::VideoCodec>(
|
||||
{vp8, red, ulpfec}, cricket::RtpHeaderExtensions());
|
||||
EXPECT_EQ(3u, capabilities.codecs.size());
|
||||
{vp8, red, ulpfec, rtx}, cricket::RtpHeaderExtensions());
|
||||
EXPECT_EQ(4u, capabilities.codecs.size());
|
||||
EXPECT_EQ(2u, capabilities.fec.size());
|
||||
EXPECT_NE(capabilities.fec.end(),
|
||||
std::find(capabilities.fec.begin(), capabilities.fec.end(),
|
||||
|
Reference in New Issue
Block a user