From 4271afbc301e3a480adc4b78766179440eeceb2c Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Tue, 27 Aug 2019 12:16:38 +0200 Subject: [PATCH] Fix the bug and reland "Make min video target bitrate configurable." MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7e896d01623e136313757b6f97d99ea21586f4c4. Reason for revert: Fixed the bug and submit again. Original change's description: > Revert "Make min video target bitrate configurable." > > This reverts commit a471e797bc6bb5d26375e4c56ff4aacbab08b8a9. > > Reason for revert: This CL adds a new symbol to .data instead of .rodata and the symbol should be a constant. > > Original change's description: > > Make min video target bitrate configurable. > > > > Change-Id: I5adf1e675be2114b648878078a8f2e6808c390c7 > > Bug: webrtc:10915 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150331 > > Commit-Queue: Ying Wang > > Reviewed-by: Niels Moller > > Reviewed-by: Erik Språng > > Reviewed-by: Christoffer Rodbro > > Cr-Commit-Position: refs/heads/master@{#28959} > > TBR=nisse@webrtc.org,sprang@webrtc.org,crodbro@webrtc.org,yinwa@webrtc.org > > Change-Id: I90f23c2c849a6ec518710bbcbdd8e9eb249e9de8 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:10915 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150534 > Reviewed-by: Mirko Bonadei > Commit-Queue: Mirko Bonadei > Cr-Commit-Position: refs/heads/master@{#28967} TBR=mbonadei@webrtc.org,nisse@webrtc.org,sprang@webrtc.org,crodbro@webrtc.org,yinwa@webrtc.org Change-Id: Ieef4972502e3c1e5a6e80d8909718dd312486a8e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:10915 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150537 Reviewed-by: Ying Wang Reviewed-by: Mirko Bonadei Reviewed-by: Niels Moller Commit-Queue: Ying Wang Cr-Commit-Position: refs/heads/master@{#28971} --- media/engine/constants.cc | 1 + media/engine/constants.h | 1 + media/engine/webrtc_video_engine.cc | 4 +++- media/engine/webrtc_video_engine.h | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/media/engine/constants.cc b/media/engine/constants.cc index fb3ac698e6..9adfa41925 100644 --- a/media/engine/constants.cc +++ b/media/engine/constants.cc @@ -16,4 +16,5 @@ const int kMinVideoBitrateBps = 30000; const int kVideoMtu = 1200; const int kVideoRtpSendBufferSize = 65536; const int kVideoRtpRecvBufferSize = 262144; +const char kMinVideoBitrateExperiment[] = "WebRTC-Video-MinVideoBitrate"; } // namespace cricket diff --git a/media/engine/constants.h b/media/engine/constants.h index b136060546..d52505db69 100644 --- a/media/engine/constants.h +++ b/media/engine/constants.h @@ -20,6 +20,7 @@ extern const int kVideoRtpRecvBufferSize; extern const char kH264CodecName[]; extern const int kMinVideoBitrateBps; +extern const char kMinVideoBitrateExperiment[]; } // namespace cricket diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index ef4a2cbbc4..ef1938eb9e 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -27,7 +27,6 @@ #include "api/video_codecs/video_encoder.h" #include "api/video_codecs/video_encoder_factory.h" #include "call/call.h" -#include "media/engine/constants.h" #include "media/engine/simulcast.h" #include "media/engine/webrtc_media_engine.h" #include "media/engine/webrtc_voice_engine.h" @@ -329,6 +328,9 @@ absl::optional GetFallbackMinBpsFromFieldTrial( } int GetMinVideoBitrateBps(webrtc::VideoCodecType type) { + if (webrtc::field_trial::IsEnabled(kMinVideoBitrateExperiment)) { + return MinVideoBitrateConfig().min_video_bitrate->bps(); + } return GetFallbackMinBpsFromFieldTrial(type).value_or(kMinVideoBitrateBps); } } // namespace diff --git a/media/engine/webrtc_video_engine.h b/media/engine/webrtc_video_engine.h index 8dd758f0eb..50467cd804 100644 --- a/media/engine/webrtc_video_engine.h +++ b/media/engine/webrtc_video_engine.h @@ -29,12 +29,15 @@ #include "call/video_receive_stream.h" #include "call/video_send_stream.h" #include "media/base/media_engine.h" +#include "media/engine/constants.h" #include "media/engine/unhandled_packets_buffer.h" #include "rtc_base/async_invoker.h" #include "rtc_base/critical_section.h" +#include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/network_route.h" #include "rtc_base/thread_annotations.h" #include "rtc_base/thread_checker.h" +#include "system_wrappers/include/field_trial.h" namespace webrtc { class VideoDecoderFactory; @@ -48,6 +51,17 @@ class Thread; namespace cricket { +struct MinVideoBitrateConfig { + webrtc::FieldTrialParameter min_video_bitrate; + + MinVideoBitrateConfig() + : min_video_bitrate("br", webrtc::DataRate::KilobitsPerSec<30>()) { + webrtc::ParseFieldTrial( + {&min_video_bitrate}, + webrtc::field_trial::FindFullName(kMinVideoBitrateExperiment)); + } +}; + class WebRtcVideoChannel; class UnsignalledSsrcHandler {