aboutsummaryrefslogtreecommitdiff
path: root/video
diff options
context:
space:
mode:
authorEvan Shrubsole <eshr@google.com>2020-07-09 11:47:10 +0200
committerCommit Bot <commit-bot@chromium.org>2020-07-09 11:10:36 +0000
commitdc4d4227389704cbf77e5bcbc214572b9e77ac64 (patch)
tree21fc57d2f8ff3e62efdc0b3287a6981a2b807a4d /video
parent94fe0d3de5e8162d1a105fd1a3ec4bd2da97f43b (diff)
downloadwebrtc-dc4d4227389704cbf77e5bcbc214572b9e77ac64.tar.gz
[Adaptation] Move AdaptationListeners to VideoStreamAdapter
This is a step needed for multi-stream and new mitigations. It also cleans up needing to signal adaptation changes in mutiple places from ResourceAdaptationProcessor. R=hbos@webrtc.org Bug: webrtc:11754 Change-Id: Ib185dc9f66fbb4a087eb9e970c68c3f47eafb17f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178874 Commit-Queue: Evan Shrubsole <eshr@google.com> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31684}
Diffstat (limited to 'video')
-rw-r--r--video/video_stream_encoder.cc27
-rw-r--r--video/video_stream_encoder.h3
-rw-r--r--video/video_stream_encoder_unittest.cc5
3 files changed, 5 insertions, 30 deletions
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 84b5aa327c..255405ee92 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -348,7 +348,6 @@ VideoStreamEncoder::VideoStreamEncoder(
degradation_preference_manager_(
std::make_unique<DegradationPreferenceManager>()),
adaptation_constraints_(),
- adaptation_listeners_(),
stream_resource_manager_(&input_state_provider_,
encoder_stats_observer,
clock_,
@@ -387,15 +386,14 @@ VideoStreamEncoder::VideoStreamEncoder(
// Add the stream resource manager's resources to the processor.
adaptation_constraints_ = stream_resource_manager_.AdaptationConstraints();
- adaptation_listeners_ = stream_resource_manager_.AdaptationListeners();
for (auto& resource : stream_resource_manager_.MappedResources()) {
resource_adaptation_processor_->AddResource(resource);
}
for (auto* constraint : adaptation_constraints_) {
resource_adaptation_processor_->AddAdaptationConstraint(constraint);
}
- for (auto* listener : adaptation_listeners_) {
- resource_adaptation_processor_->AddAdaptationListener(listener);
+ for (auto* listener : stream_resource_manager_.AdaptationListeners()) {
+ video_stream_adapter_->AddAdaptationListener(listener);
}
initialize_processor_event.Set();
});
@@ -423,8 +421,8 @@ void VideoStreamEncoder::Stop() {
for (auto* constraint : adaptation_constraints_) {
resource_adaptation_processor_->RemoveAdaptationConstraint(constraint);
}
- for (auto* listener : adaptation_listeners_) {
- resource_adaptation_processor_->RemoveAdaptationListener(listener);
+ for (auto* listener : stream_resource_manager_.AdaptationListeners()) {
+ video_stream_adapter_->RemoveAdaptationListener(listener);
}
video_stream_adapter_->RemoveRestrictionsListener(this);
video_stream_adapter_->RemoveRestrictionsListener(
@@ -2153,23 +2151,6 @@ void VideoStreamEncoder::InjectAdaptationConstraint(
event.Wait(rtc::Event::kForever);
}
-void VideoStreamEncoder::InjectAdaptationListener(
- AdaptationListener* adaptation_listener) {
- rtc::Event event;
- resource_adaptation_queue_.PostTask([this, adaptation_listener, &event] {
- RTC_DCHECK_RUN_ON(&resource_adaptation_queue_);
- if (!resource_adaptation_processor_) {
- // The VideoStreamEncoder was stopped and the processor destroyed before
- // this task had a chance to execute. No action needed.
- return;
- }
- adaptation_listeners_.push_back(adaptation_listener);
- resource_adaptation_processor_->AddAdaptationListener(adaptation_listener);
- event.Set();
- });
- event.Wait(rtc::Event::kForever);
-}
-
rtc::scoped_refptr<QualityScalerResource>
VideoStreamEncoder::quality_scaler_resource_for_testing() {
RTC_DCHECK_RUN_ON(&encoder_queue_);
diff --git a/video/video_stream_encoder.h b/video/video_stream_encoder.h
index 5af011113d..95d4dcb69e 100644
--- a/video/video_stream_encoder.h
+++ b/video/video_stream_encoder.h
@@ -129,7 +129,6 @@ class VideoStreamEncoder : public VideoStreamEncoderInterface,
void InjectAdaptationResource(rtc::scoped_refptr<Resource> resource,
VideoAdaptationReason reason);
void InjectAdaptationConstraint(AdaptationConstraint* adaptation_constraint);
- void InjectAdaptationListener(AdaptationListener* adaptation_listener);
rtc::scoped_refptr<QualityScalerResource>
quality_scaler_resource_for_testing();
@@ -423,8 +422,6 @@ class VideoStreamEncoder : public VideoStreamEncoderInterface,
std::unique_ptr<DegradationPreferenceManager> degradation_preference_manager_;
std::vector<AdaptationConstraint*> adaptation_constraints_
RTC_GUARDED_BY(&resource_adaptation_queue_);
- std::vector<AdaptationListener*> adaptation_listeners_
- RTC_GUARDED_BY(&resource_adaptation_queue_);
// Handles input, output and stats reporting related to VideoStreamEncoder
// specific resources, such as "encode usage percent" measurements and "QP
// scaling". Also involved with various mitigations such as inital frame
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index 6bdcbd09c5..6a11bf6b83 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -322,13 +322,11 @@ class VideoStreamEncoderUnderTest : public VideoStreamEncoder {
task_queue_factory),
fake_cpu_resource_(FakeResource::Create("FakeResource[CPU]")),
fake_quality_resource_(FakeResource::Create("FakeResource[QP]")),
- fake_adaptation_constraint_("FakeAdaptationConstraint"),
- fake_adaptation_listener_() {
+ fake_adaptation_constraint_("FakeAdaptationConstraint") {
InjectAdaptationResource(fake_quality_resource_,
VideoAdaptationReason::kQuality);
InjectAdaptationResource(fake_cpu_resource_, VideoAdaptationReason::kCpu);
InjectAdaptationConstraint(&fake_adaptation_constraint_);
- InjectAdaptationListener(&fake_adaptation_listener_);
}
void SetSourceAndWaitForRestrictionsUpdated(
@@ -435,7 +433,6 @@ class VideoStreamEncoderUnderTest : public VideoStreamEncoder {
rtc::scoped_refptr<FakeResource> fake_cpu_resource_;
rtc::scoped_refptr<FakeResource> fake_quality_resource_;
FakeAdaptationConstraint fake_adaptation_constraint_;
- FakeAdaptationListener fake_adaptation_listener_;
};
class VideoStreamFactory