Fix WebRTC-Video-MinVideoBitrate for VP9
Make sure the experiment-derived value is used for VP9. Bug: webrtc:11024 Change-Id: I80b6d388486f2dec793bc8ca872babe6165dcfb2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/156562 Commit-Queue: Elad Alon <eladalon@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29453}
This commit is contained in:
@ -159,6 +159,7 @@ rtc_static_library("video_coding") {
|
|||||||
"../../rtc_base/experiments:alr_experiment",
|
"../../rtc_base/experiments:alr_experiment",
|
||||||
"../../rtc_base/experiments:field_trial_parser",
|
"../../rtc_base/experiments:field_trial_parser",
|
||||||
"../../rtc_base/experiments:jitter_upper_bound_experiment",
|
"../../rtc_base/experiments:jitter_upper_bound_experiment",
|
||||||
|
"../../rtc_base/experiments:min_video_bitrate_experiment",
|
||||||
"../../rtc_base/experiments:rtt_mult_experiment",
|
"../../rtc_base/experiments:rtt_mult_experiment",
|
||||||
"../../rtc_base/synchronization:sequence_checker",
|
"../../rtc_base/synchronization:sequence_checker",
|
||||||
"../../rtc_base/system:fallthrough",
|
"../../rtc_base/system:fallthrough",
|
||||||
|
@ -17,12 +17,15 @@
|
|||||||
|
|
||||||
#include "absl/types/optional.h"
|
#include "absl/types/optional.h"
|
||||||
#include "api/scoped_refptr.h"
|
#include "api/scoped_refptr.h"
|
||||||
|
#include "api/units/data_rate.h"
|
||||||
#include "api/video/video_bitrate_allocation.h"
|
#include "api/video/video_bitrate_allocation.h"
|
||||||
#include "api/video_codecs/video_encoder.h"
|
#include "api/video_codecs/video_encoder.h"
|
||||||
#include "modules/video_coding/codecs/vp9/svc_config.h"
|
#include "modules/video_coding/codecs/vp9/svc_config.h"
|
||||||
#include "modules/video_coding/include/video_coding_defines.h"
|
#include "modules/video_coding/include/video_coding_defines.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
#include "rtc_base/experiments/min_video_bitrate_experiment.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
#include "rtc_base/numerics/safe_conversions.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
@ -241,6 +244,18 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const absl::optional<DataRate> experimental_min_bitrate =
|
||||||
|
GetExperimentalMinVideoBitrate(video_codec.codecType);
|
||||||
|
if (experimental_min_bitrate) {
|
||||||
|
const int experimental_min_bitrate_kbps =
|
||||||
|
rtc::saturated_cast<int>(experimental_min_bitrate->kbps());
|
||||||
|
video_codec.minBitrate = experimental_min_bitrate_kbps;
|
||||||
|
video_codec.simulcastStream[0].minBitrate = experimental_min_bitrate_kbps;
|
||||||
|
if (video_codec.codecType == kVideoCodecVP9) {
|
||||||
|
video_codec.spatialLayers[0].minBitrate = experimental_min_bitrate_kbps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return video_codec;
|
return video_codec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,13 +506,11 @@ void VideoSendStreamImpl::OnEncoderConfigurationChanged(
|
|||||||
|
|
||||||
const absl::optional<DataRate> experimental_min_bitrate =
|
const absl::optional<DataRate> experimental_min_bitrate =
|
||||||
GetExperimentalMinVideoBitrate(codec_type);
|
GetExperimentalMinVideoBitrate(codec_type);
|
||||||
const int min_bitrate_bps =
|
|
||||||
experimental_min_bitrate
|
|
||||||
? rtc::saturated_cast<int>(experimental_min_bitrate->bps())
|
|
||||||
: kDefaultMinVideoBitrateBps;
|
|
||||||
|
|
||||||
encoder_min_bitrate_bps_ =
|
encoder_min_bitrate_bps_ =
|
||||||
std::max(streams[0].min_bitrate_bps, min_bitrate_bps);
|
experimental_min_bitrate
|
||||||
|
? experimental_min_bitrate->bps()
|
||||||
|
: std::max(streams[0].min_bitrate_bps, kDefaultMinVideoBitrateBps);
|
||||||
|
|
||||||
encoder_max_bitrate_bps_ = 0;
|
encoder_max_bitrate_bps_ = 0;
|
||||||
double stream_bitrate_priority_sum = 0;
|
double stream_bitrate_priority_sum = 0;
|
||||||
for (const auto& stream : streams) {
|
for (const auto& stream : streams) {
|
||||||
|
Reference in New Issue
Block a user