Adds support for the "apt" format parameter and turns on the RTX feature.

BUG=1811,1095
R=henrike@webrtc.org, mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/12579009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6372 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
stefan@webrtc.org 2014-06-09 12:51:39 +00:00
parent ed7edb8e89
commit 85d2794e5b
3 changed files with 25 additions and 1 deletions

View File

@ -247,6 +247,7 @@ bool PeerConnectionFactory::Initialize_s() {
channel_manager_.reset(new cricket::ChannelManager( channel_manager_.reset(new cricket::ChannelManager(
webrtc_media_engine, device_manager, worker_thread_)); webrtc_media_engine, device_manager, worker_thread_));
channel_manager_->SetVideoRtxEnabled(true);
if (!channel_manager_->Init()) { if (!channel_manager_->Init()) {
return false; return false;
} }

View File

@ -71,6 +71,7 @@ using cricket::kCodecParamUseInbandFec;
using cricket::kCodecParamSctpProtocol; using cricket::kCodecParamSctpProtocol;
using cricket::kCodecParamSctpStreams; using cricket::kCodecParamSctpStreams;
using cricket::kCodecParamMaxAverageBitrate; using cricket::kCodecParamMaxAverageBitrate;
using cricket::kCodecParamAssociatedPayloadType;
using cricket::kWildcardPayloadType; using cricket::kWildcardPayloadType;
using cricket::MediaContentDescription; using cricket::MediaContentDescription;
using cricket::MediaType; using cricket::MediaType;
@ -1512,7 +1513,7 @@ bool IsFmtpParam(const std::string& name) {
kCodecParamStereo, kCodecParamUseInbandFec, kCodecParamStartBitrate, kCodecParamStereo, kCodecParamUseInbandFec, kCodecParamStartBitrate,
kCodecParamMaxBitrate, kCodecParamMinBitrate, kCodecParamMaxQuantization, kCodecParamMaxBitrate, kCodecParamMinBitrate, kCodecParamMaxQuantization,
kCodecParamSctpProtocol, kCodecParamSctpStreams, kCodecParamSctpProtocol, kCodecParamSctpStreams,
kCodecParamMaxAverageBitrate kCodecParamMaxAverageBitrate, kCodecParamAssociatedPayloadType
}; };
for (size_t i = 0; i < ARRAY_SIZE(kFmtpParams); ++i) { for (size_t i = 0; i < ARRAY_SIZE(kFmtpParams); ++i) {
if (_stricmp(name.c_str(), kFmtpParams[i]) == 0) { if (_stricmp(name.c_str(), kFmtpParams[i]) == 0) {

View File

@ -1153,6 +1153,15 @@ class WebRtcSdpTest : public testing::Test {
<< "a=maxptime:" << params.max_ptime << "\r\n"; << "a=maxptime:" << params.max_ptime << "\r\n";
sdp += os.str(); sdp += os.str();
os.clear();
os.str("");
// Pl type 100 preferred.
os << "m=video 1 RTP/SAVPF 99 95\r\n"
<< "a=rtpmap:99 VP8/90000\r\n"
<< "a=rtpmap:95 RTX/90000\r\n"
<< "a=fmtp:95 apt=99;rtx-time=1000\r\n";
sdp += os.str();
// Deserialize // Deserialize
SdpParseError error; SdpParseError error;
EXPECT_TRUE(webrtc::SdpDeserialize(sdp, jdesc_output, &error)); EXPECT_TRUE(webrtc::SdpDeserialize(sdp, jdesc_output, &error));
@ -1183,6 +1192,19 @@ class WebRtcSdpTest : public testing::Test {
} }
} }
} }
const ContentInfo* vc = GetFirstVideoContent(jdesc_output->description());
ASSERT_TRUE(vc != NULL);
const VideoContentDescription* vcd =
static_cast<const VideoContentDescription*>(vc->description);
ASSERT_FALSE(vcd->codecs().empty());
cricket::VideoCodec vp8 = vcd->codecs()[0];
EXPECT_EQ("VP8", vp8.name);
EXPECT_EQ(99, vp8.id);
cricket::VideoCodec rtx = vcd->codecs()[1];
EXPECT_EQ("RTX", rtx.name);
EXPECT_EQ(95, rtx.id);
VerifyCodecParameter(rtx.params, "apt", vp8.id);
} }
void TestDeserializeRtcpFb(JsepSessionDescription* jdesc_output, void TestDeserializeRtcpFb(JsepSessionDescription* jdesc_output,