Wire up VideoOptions for payload-based padding.
BUG=1788
R=wu@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18879004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6759 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
index 75937b0..549aa2c 100644
--- a/talk/media/webrtc/webrtcvideoengine2.cc
+++ b/talk/media/webrtc/webrtcvideoengine2.cc
@@ -664,6 +664,7 @@
void WebRtcVideoChannel2::SetDefaultOptions() {
options_.video_noise_reduction.Set(true);
+ options_.use_payload_padding.Set(false);
}
WebRtcVideoChannel2::~WebRtcVideoChannel2() {
@@ -1508,6 +1509,9 @@
// Set RTX payload type if RTX is enabled.
if (!parameters_.config.rtp.rtx.ssrcs.empty()) {
parameters_.config.rtp.rtx.payload_type = codec_settings.rtx_payload_type;
+
+ options.use_payload_padding.Get(
+ ¶meters_.config.rtp.rtx.pad_with_redundant_payloads);
}
if (IsNackEnabled(codec_settings.codec)) {
@@ -1516,6 +1520,7 @@
parameters_.codec_settings.Set(codec_settings);
parameters_.options = options;
+
RecreateWebRtcStream();
delete old_encoder;
}
diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
index c2f2dc3..c9d2066 100644
--- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
@@ -1067,6 +1067,32 @@
FAIL() << "Not implemented."; // TODO(pbos): Implement.
}
+TEST_F(WebRtcVideoChannel2Test, RedundantPayloadsDisabledByDefault) {
+ const std::vector<uint32> ssrcs = MAKE_VECTOR(kSsrcs1);
+ const std::vector<uint32> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1);
+ FakeVideoSendStream* stream = AddSendStream(
+ cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs));
+ EXPECT_FALSE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
+}
+
+TEST_F(WebRtcVideoChannel2Test, SetOptionsWithPayloadPadding) {
+ VideoOptions options;
+ options.use_payload_padding.Set(true);
+ channel_->SetOptions(options);
+
+ const std::vector<uint32> ssrcs = MAKE_VECTOR(kSsrcs1);
+ const std::vector<uint32> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1);
+ FakeVideoSendStream* stream = AddSendStream(
+ cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs));
+ EXPECT_TRUE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
+
+ options.use_payload_padding.Set(false);
+ channel_->SetOptions(options);
+
+ stream = fake_channel_->GetFakeCall()->GetVideoSendStreams()[0];
+ EXPECT_FALSE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
+}
+
TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) {
FakeVideoSendStream* stream = AddSendStream();
webrtc::VideoCodecVP8 vp8_settings;