diff options
author | Evan Shrubsole <eshr@google.com> | 2020-07-09 11:47:10 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-07-09 11:10:36 +0000 |
commit | dc4d4227389704cbf77e5bcbc214572b9e77ac64 (patch) | |
tree | 21fc57d2f8ff3e62efdc0b3287a6981a2b807a4d /video | |
parent | 94fe0d3de5e8162d1a105fd1a3ec4bd2da97f43b (diff) | |
download | webrtc-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.cc | 27 | ||||
-rw-r--r-- | video/video_stream_encoder.h | 3 | ||||
-rw-r--r-- | video/video_stream_encoder_unittest.cc | 5 |
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 |