Remove task_queue dependency for QualityScaler
This allows for the possiblity to move the QualityScaler
out of the VideoStreamEncoder in the future.
Bug: webrtc:11222
Change-Id: I1d563cf08791e27ff5065ce90bcb150a7974d868
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167534
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#30406}
diff --git a/modules/video_coding/utility/quality_scaler.cc b/modules/video_coding/utility/quality_scaler.cc
index a866aeb..b7aca9a 100644
--- a/modules/video_coding/utility/quality_scaler.cc
+++ b/modules/video_coding/utility/quality_scaler.cc
@@ -68,14 +68,12 @@
rtc::ExpFilter smoother_;
};
-QualityScaler::QualityScaler(rtc::TaskQueue* task_queue,
- AdaptationObserverInterface* observer,
+QualityScaler::QualityScaler(AdaptationObserverInterface* observer,
VideoEncoder::QpThresholds thresholds)
- : QualityScaler(task_queue, observer, thresholds, kMeasureMs) {}
+ : QualityScaler(observer, thresholds, kMeasureMs) {}
// Protected ctor, should not be called directly.
-QualityScaler::QualityScaler(rtc::TaskQueue* task_queue,
- AdaptationObserverInterface* observer,
+QualityScaler::QualityScaler(AdaptationObserverInterface* observer,
VideoEncoder::QpThresholds thresholds,
int64_t sampling_period_ms)
: observer_(observer),
@@ -106,7 +104,7 @@
}
RTC_DCHECK(observer_ != nullptr);
check_qp_task_ = RepeatingTaskHandle::DelayedStart(
- task_queue->Get(), TimeDelta::ms(GetSamplingPeriodMs()), [this]() {
+ TaskQueueBase::Current(), TimeDelta::ms(GetSamplingPeriodMs()), [this]() {
CheckQp();
return TimeDelta::ms(GetSamplingPeriodMs());
});
diff --git a/modules/video_coding/utility/quality_scaler.h b/modules/video_coding/utility/quality_scaler.h
index eccd8f0..9556a58 100644
--- a/modules/video_coding/utility/quality_scaler.h
+++ b/modules/video_coding/utility/quality_scaler.h
@@ -53,8 +53,7 @@
// Construct a QualityScaler with given |thresholds| and |observer|.
// This starts the quality scaler periodically checking what the average QP
// has been recently.
- QualityScaler(rtc::TaskQueue* task_queue,
- AdaptationObserverInterface* observer,
+ QualityScaler(AdaptationObserverInterface* observer,
VideoEncoder::QpThresholds thresholds);
virtual ~QualityScaler();
// Should be called each time a frame is dropped at encoding.
@@ -68,8 +67,7 @@
// The following members declared protected for testing purposes.
protected:
- QualityScaler(rtc::TaskQueue* task_queue,
- AdaptationObserverInterface* observer,
+ QualityScaler(AdaptationObserverInterface* observer,
VideoEncoder::QpThresholds thresholds,
int64_t sampling_period_ms);
diff --git a/modules/video_coding/utility/quality_scaler_unittest.cc b/modules/video_coding/utility/quality_scaler_unittest.cc
index 939865d..6f16dc8 100644
--- a/modules/video_coding/utility/quality_scaler_unittest.cc
+++ b/modules/video_coding/utility/quality_scaler_unittest.cc
@@ -50,10 +50,9 @@
// Pass a lower sampling period to speed up the tests.
class QualityScalerUnderTest : public QualityScaler {
public:
- explicit QualityScalerUnderTest(rtc::TaskQueue* task_queue,
- AdaptationObserverInterface* observer,
+ explicit QualityScalerUnderTest(AdaptationObserverInterface* observer,
VideoEncoder::QpThresholds thresholds)
- : QualityScaler(task_queue, observer, thresholds, 5) {}
+ : QualityScaler(observer, thresholds, 5) {}
};
class QualityScalerTest : public ::testing::Test,
@@ -74,8 +73,7 @@
task_queue_.SendTask(
[this] {
qs_ = std::unique_ptr<QualityScaler>(new QualityScalerUnderTest(
- &task_queue_, observer_.get(),
- VideoEncoder::QpThresholds(kLowQp, kHighQp)));
+ observer_.get(), VideoEncoder::QpThresholds(kLowQp, kHighQp)));
},
RTC_FROM_HERE);
}
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 716a56e..6eaf8c7 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -799,9 +799,8 @@
// upcast.
AdaptationObserverInterface* observer = resource_adaptation_module_.get();
quality_scaler_ = std::make_unique<QualityScaler>(
- &encoder_queue_, observer,
- experimental_thresholds ? *experimental_thresholds
- : *(scaling_settings.thresholds));
+ observer, experimental_thresholds ? *experimental_thresholds
+ : *(scaling_settings.thresholds));
resource_adaptation_module_->SetIsQualityScalerEnabled(true);
initial_framedrop_ = 0;
}