Use DataRates in QualityRampUpExperimentHelper

R=sprang@webrtc.org

Bug: None
Change-Id: Ia05e0bc99b98372f87d78a9a3014d7a228ce8abb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177342
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#31542}
This commit is contained in:
Evan Shrubsole
2020-06-16 16:07:02 +02:00
committed by Commit Bot
parent c6d6e06a5c
commit 2c9d76a4eb
4 changed files with 17 additions and 15 deletions

View File

@ -29,6 +29,7 @@ rtc_library("video_adaptation") {
"../../api:scoped_refptr",
"../../api/adaptation:resource_adaptation_api",
"../../api/task_queue:task_queue",
"../../api/units:data_rate",
"../../api/video:video_adaptation",
"../../api/video:video_frame",
"../../api/video:video_stream_encoder",

View File

@ -45,20 +45,20 @@ QualityRampUpExperimentHelper::CreateIfEnabled(
void QualityRampUpExperimentHelper::PerformQualityRampupExperiment(
rtc::scoped_refptr<QualityScalerResource> quality_scaler_resource,
uint32_t bw_kbps,
uint32_t encoder_target_bitrate,
uint32_t max_bitrate_bps,
DataRate bandwidth,
DataRate encoder_target_bitrate,
DataRate max_bitrate,
int pixels) {
if (!quality_scaler_resource->is_started())
return;
int64_t now_ms = clock_->TimeInMilliseconds();
quality_rampup_experiment_.SetMaxBitrate(pixels, max_bitrate_bps);
quality_rampup_experiment_.SetMaxBitrate(pixels, max_bitrate.kbps());
bool try_quality_rampup = false;
if (quality_rampup_experiment_.BwHigh(now_ms, bw_kbps)) {
if (quality_rampup_experiment_.BwHigh(now_ms, bandwidth.kbps())) {
// Verify that encoder is at max bitrate and the QP is low.
if (encoder_target_bitrate == max_bitrate_bps * 1000 &&
if (encoder_target_bitrate == max_bitrate &&
quality_scaler_resource->QpFastFilterLow()) {
try_quality_rampup = true;
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include "api/scoped_refptr.h"
#include "api/units/data_rate.h"
#include "rtc_base/experiments/quality_rampup_experiment.h"
#include "system_wrappers/include/clock.h"
#include "video/adaptation/quality_scaler_resource.h"
@ -45,9 +46,9 @@ class QualityRampUpExperimentHelper {
void PerformQualityRampupExperiment(
rtc::scoped_refptr<QualityScalerResource> quality_scaler_resource,
uint32_t bw_kbps,
uint32_t encoder_target_bitrate,
uint32_t max_bitrate_bps,
DataRate bandwidth,
DataRate encoder_target_bitrate,
DataRate max_bitrate,
int pixels);
private:

View File

@ -487,13 +487,13 @@ void VideoStreamEncoderResourceManager::OnMaybeEncodeFrame() {
RTC_DCHECK_RUN_ON(encoder_queue_);
initial_frame_dropper_->OnMaybeEncodeFrame();
if (quality_rampup_experiment_) {
uint32_t bw_kbps = encoder_rates_.has_value()
? encoder_rates_.value().bandwidth_allocation.kbps()
: 0;
DataRate bandwidth = encoder_rates_.has_value()
? encoder_rates_->bandwidth_allocation
: DataRate::Zero();
quality_rampup_experiment_->PerformQualityRampupExperiment(
quality_scaler_resource_, bw_kbps,
encoder_target_bitrate_bps_.value_or(0),
encoder_settings_->video_codec().maxBitrate,
quality_scaler_resource_, bandwidth,
DataRate::BitsPerSec(encoder_target_bitrate_bps_.value_or(0)),
DataRate::KilobitsPerSec(encoder_settings_->video_codec().maxBitrate),
LastInputFrameSizeOrDefault());
}
}