diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index 75937b046..549aa2cfe 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -664,6 +664,7 @@ void WebRtcVideoChannel2::Construct(webrtc::Call* call, void WebRtcVideoChannel2::SetDefaultOptions() { options_.video_noise_reduction.Set(true); + options_.use_payload_padding.Set(false); } WebRtcVideoChannel2::~WebRtcVideoChannel2() { @@ -1508,6 +1509,9 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodecAndOptions( // 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 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodecAndOptions( 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 c2f2dc35c..c9d2066e0 100644 --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc @@ -1067,6 +1067,32 @@ TEST_F(WebRtcVideoChannel2Test, FAIL() << "Not implemented."; // TODO(pbos): Implement. } +TEST_F(WebRtcVideoChannel2Test, RedundantPayloadsDisabledByDefault) { + const std::vector ssrcs = MAKE_VECTOR(kSsrcs1); + const std::vector 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 ssrcs = MAKE_VECTOR(kSsrcs1); + const std::vector 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;