From 8120353342f27df70018a808efa92acc8a07d9f2 Mon Sep 17 00:00:00 2001 From: "pbos@webrtc.org" Date: Wed, 23 Jul 2014 07:04:08 +0000 Subject: [PATCH] Implement suspend-below-min-bitrate option. BUG=1788 R=wu@webrtc.org Review URL: https://webrtc-codereview.appspot.com/17989004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6760 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/media/webrtc/webrtcvideoengine2.cc | 4 ++++ .../webrtc/webrtcvideoengine2_unittest.cc | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index 549aa2cfe..28bd6f46a 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -665,6 +665,7 @@ void WebRtcVideoChannel2::Construct(webrtc::Call* call, void WebRtcVideoChannel2::SetDefaultOptions() { options_.video_noise_reduction.Set(true); options_.use_payload_padding.Set(false); + options_.suspend_below_min_bitrate.Set(false); } WebRtcVideoChannel2::~WebRtcVideoChannel2() { @@ -1518,6 +1519,9 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodecAndOptions( parameters_.config.rtp.nack.rtp_history_ms = kNackHistoryMs; } + options.suspend_below_min_bitrate.Get( + ¶meters_.config.suspend_below_min_bitrate); + parameters_.codec_settings.Set(codec_settings); parameters_.options = options; diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc index c9d2066e0..c6168ea16 100644 --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc @@ -1067,6 +1067,26 @@ TEST_F(WebRtcVideoChannel2Test, FAIL() << "Not implemented."; // TODO(pbos): Implement. } +TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { + FakeVideoSendStream* stream = AddSendStream(); + EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); +} + +TEST_F(WebRtcVideoChannel2Test, SetOptionsWithSuspendBelowMinBitrate) { + VideoOptions options; + options.suspend_below_min_bitrate.Set(true); + channel_->SetOptions(options); + + FakeVideoSendStream* stream = AddSendStream(); + EXPECT_TRUE(stream->GetConfig().suspend_below_min_bitrate); + + options.suspend_below_min_bitrate.Set(false); + channel_->SetOptions(options); + + stream = fake_channel_->GetFakeCall()->GetVideoSendStreams()[0]; + EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); +} + TEST_F(WebRtcVideoChannel2Test, RedundantPayloadsDisabledByDefault) { const std::vector ssrcs = MAKE_VECTOR(kSsrcs1); const std::vector rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1);