From 03f8b8a241a36fbec22d9eaba8a7d5552ccdb78a Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Mon, 18 Jul 2022 13:11:42 +0200 Subject: [PATCH] In video replace non-owning pointer to rtc::TaskQueue with non-owning pointer to TaskQueueBase rtc::TaskQueue is a simple wrapper over TaskQueueBase and adds no extra features when task queue is used without passing ownership. Reducing usage of the internal rtc::TaskQueue wrapper gives users more flexibility how TaskQueueBase* is stored. Bug: webrtc:14169 Change-Id: If5c8827544c843502c7dfcef775ac558de79ec3a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268189 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/main@{#37549} --- modules/video_coding/BUILD.gn | 6 +----- modules/video_coding/frame_buffer2.cc | 4 ++-- modules/video_coding/frame_buffer2.h | 6 +++--- modules/video_coding/frame_buffer2_unittest.cc | 8 +++++--- modules/video_coding/nack_requester.cc | 1 - modules/video_coding/nack_requester.h | 2 +- .../utility/bandwidth_quality_scaler.cc | 1 - .../utility/bandwidth_quality_scaler.h | 1 - modules/video_coding/utility/quality_scaler.cc | 1 - modules/video_coding/utility/quality_scaler.h | 1 - test/fuzzers/BUILD.gn | 1 + test/fuzzers/frame_buffer2_fuzzer.cc | 15 +++++++++------ video/BUILD.gn | 1 - video/adaptation/BUILD.gn | 2 -- .../bandwidth_quality_scaler_resource.h | 1 - video/adaptation/encode_usage_resource.h | 1 - video/adaptation/quality_scaler_resource.h | 1 - .../video_stream_encoder_resource_manager.cc | 11 +++++------ .../video_stream_encoder_resource_manager.h | 5 ++--- video/call_stats2.h | 2 +- video/call_stats2_unittest.cc | 12 +++++++----- video/frame_buffer_proxy.cc | 11 ++++++----- video/frame_buffer_proxy.h | 3 +-- video/frame_buffer_proxy_unittest.cc | 2 +- video/rtp_streams_synchronizer2.h | 2 +- video/video_receive_stream2.cc | 3 +-- video/video_send_stream.cc | 2 +- video/video_send_stream.h | 3 +-- video/video_send_stream_impl.cc | 4 ++-- video/video_send_stream_impl.h | 6 +++--- video/video_send_stream_impl_unittest.cc | 2 +- video/video_stream_decoder_impl.cc | 2 +- video/video_stream_encoder.cc | 2 +- video/video_stream_encoder.h | 2 +- 34 files changed, 58 insertions(+), 69 deletions(-) diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index f4d9ff7a5c..2d6ddb33e5 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -90,7 +90,6 @@ rtc_library("nack_requester") { "../../rtc_base:logging", "../../rtc_base:macromagic", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base/experiments:field_trial_parser", "../../rtc_base/task_utils:repeating_task", "../../system_wrappers", @@ -249,7 +248,6 @@ rtc_library("video_coding") { "../../rtc_base:macromagic", "../../rtc_base:rtc_event", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base:safe_conversions", "../../rtc_base:threading", "../../rtc_base:timeutils", @@ -439,7 +437,6 @@ rtc_library("video_coding_utility") { "../../rtc_base:rate_statistics", "../../rtc_base:refcount", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base:stringutils", "../../rtc_base:timeutils", "../../rtc_base:weak_ptr", @@ -868,7 +865,6 @@ if (rtc_include_tests) { "../../rtc_base:checks", "../../rtc_base:macromagic", "../../rtc_base:rtc_event", - "../../rtc_base:rtc_task_queue", "../../rtc_base:timeutils", "../../rtc_base/synchronization:mutex", "../../rtc_base/system:no_unique_address", @@ -1153,6 +1149,7 @@ if (rtc_include_tests) { "../../api:scoped_refptr", "../../api:simulcast_test_fixture_api", "../../api:videocodec_test_fixture_api", + "../../api/task_queue", "../../api/task_queue:default_task_queue_factory", "../../api/test/video:function_video_factory", "../../api/units:data_size", @@ -1185,7 +1182,6 @@ if (rtc_include_tests) { "../../rtc_base:rtc_base_tests_utils", "../../rtc_base:rtc_event", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base:stringutils", "../../rtc_base:task_queue_for_test", "../../rtc_base:timeutils", diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc index 7e6d622d5e..fbd3c53be3 100644 --- a/modules/video_coding/frame_buffer2.cc +++ b/modules/video_coding/frame_buffer2.cc @@ -83,7 +83,7 @@ FrameBuffer::~FrameBuffer() { void FrameBuffer::NextFrame(int64_t max_wait_time_ms, bool keyframe_required, - rtc::TaskQueue* callback_queue, + TaskQueueBase* callback_queue, NextFrameCallback handler) { RTC_DCHECK_RUN_ON(&callback_checker_); RTC_DCHECK(callback_queue->IsCurrent()); @@ -107,7 +107,7 @@ void FrameBuffer::StartWaitForNextFrameOnQueue() { RTC_DCHECK(!callback_task_.Running()); int64_t wait_ms = FindNextFrame(clock_->CurrentTime()); callback_task_ = RepeatingTaskHandle::DelayedStart( - callback_queue_->Get(), TimeDelta::Millis(wait_ms), + callback_queue_, TimeDelta::Millis(wait_ms), [this] { RTC_DCHECK_RUN_ON(&callback_checker_); // If this task has not been cancelled, we did not get any new frames diff --git a/modules/video_coding/frame_buffer2.h b/modules/video_coding/frame_buffer2.h index 1315d2f254..13918b0e18 100644 --- a/modules/video_coding/frame_buffer2.h +++ b/modules/video_coding/frame_buffer2.h @@ -20,6 +20,7 @@ #include "absl/container/inlined_vector.h" #include "api/field_trials_view.h" #include "api/sequence_checker.h" +#include "api/task_queue/task_queue_base.h" #include "api/video/encoded_frame.h" #include "modules/video_coding/include/video_coding_defines.h" #include "modules/video_coding/timing/inter_frame_delay.h" @@ -31,7 +32,6 @@ #include "rtc_base/numerics/sequence_number_util.h" #include "rtc_base/synchronization/mutex.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" #include "rtc_base/task_utils/repeating_task.h" #include "rtc_base/thread_annotations.h" @@ -66,7 +66,7 @@ class FrameBuffer { // or with nullptr if no frame is ready for decoding after `max_wait_time_ms`. void NextFrame(int64_t max_wait_time_ms, bool keyframe_required, - rtc::TaskQueue* callback_queue, + TaskQueueBase* callback_queue, NextFrameCallback handler); // Tells the FrameBuffer which protection mode that is in use. Affects @@ -166,7 +166,7 @@ class FrameBuffer { Mutex mutex_; Clock* const clock_; - rtc::TaskQueue* callback_queue_ RTC_GUARDED_BY(mutex_); + TaskQueueBase* callback_queue_ RTC_GUARDED_BY(mutex_); RepeatingTaskHandle callback_task_ RTC_GUARDED_BY(mutex_); NextFrameCallback frame_handler_ RTC_GUARDED_BY(mutex_); int64_t latest_return_time_ms_ RTC_GUARDED_BY(mutex_); diff --git a/modules/video_coding/frame_buffer2_unittest.cc b/modules/video_coding/frame_buffer2_unittest.cc index 4faafa698f..2c21a86dfc 100644 --- a/modules/video_coding/frame_buffer2_unittest.cc +++ b/modules/video_coding/frame_buffer2_unittest.cc @@ -16,6 +16,7 @@ #include #include +#include "api/task_queue/task_queue_base.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "modules/video_coding/frame_object.h" @@ -185,8 +186,9 @@ class TestFrameBuffer2 : public ::testing::Test { } void ExtractFrame(int64_t max_wait_time = 0, bool keyframe_required = false) { - time_task_queue_.PostTask([this, max_wait_time, keyframe_required]() { - buffer_->NextFrame(max_wait_time, keyframe_required, &time_task_queue_, + time_task_queue_->PostTask([this, max_wait_time, keyframe_required]() { + buffer_->NextFrame(max_wait_time, keyframe_required, + time_task_queue_.get(), [this](std::unique_ptr frame) { frames_.emplace_back(std::move(frame)); }); @@ -218,7 +220,7 @@ class TestFrameBuffer2 : public ::testing::Test { test::ScopedKeyValueConfig field_trials_; webrtc::GlobalSimulatedTimeController time_controller_; - rtc::TaskQueue time_task_queue_; + std::unique_ptr time_task_queue_; VCMTimingFake timing_; std::unique_ptr buffer_; std::vector> frames_; diff --git a/modules/video_coding/nack_requester.cc b/modules/video_coding/nack_requester.cc index 9c131a47ba..80dfe86cc3 100644 --- a/modules/video_coding/nack_requester.cc +++ b/modules/video_coding/nack_requester.cc @@ -19,7 +19,6 @@ #include "rtc_base/checks.h" #include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/logging.h" -#include "rtc_base/task_queue.h" namespace webrtc { diff --git a/modules/video_coding/nack_requester.h b/modules/video_coding/nack_requester.h index 73bb493b63..c860787dcf 100644 --- a/modules/video_coding/nack_requester.h +++ b/modules/video_coding/nack_requester.h @@ -20,12 +20,12 @@ #include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/task_queue/pending_task_safety_flag.h" +#include "api/task_queue/task_queue_base.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "modules/include/module_common_types.h" #include "modules/video_coding/histogram.h" #include "rtc_base/numerics/sequence_number_util.h" -#include "rtc_base/task_queue.h" #include "rtc_base/task_utils/repeating_task.h" #include "rtc_base/thread_annotations.h" #include "system_wrappers/include/clock.h" diff --git a/modules/video_coding/utility/bandwidth_quality_scaler.cc b/modules/video_coding/utility/bandwidth_quality_scaler.cc index 12f8a49cee..13502a142b 100644 --- a/modules/video_coding/utility/bandwidth_quality_scaler.cc +++ b/modules/video_coding/utility/bandwidth_quality_scaler.cc @@ -21,7 +21,6 @@ #include "rtc_base/experiments/bandwidth_quality_scaler_settings.h" #include "rtc_base/logging.h" #include "rtc_base/numerics/exp_filter.h" -#include "rtc_base/task_queue.h" #include "rtc_base/time_utils.h" #include "rtc_base/weak_ptr.h" diff --git a/modules/video_coding/utility/bandwidth_quality_scaler.h b/modules/video_coding/utility/bandwidth_quality_scaler.h index f35d607afb..7cd1de0dd2 100644 --- a/modules/video_coding/utility/bandwidth_quality_scaler.h +++ b/modules/video_coding/utility/bandwidth_quality_scaler.h @@ -27,7 +27,6 @@ #include "rtc_base/rate_statistics.h" #include "rtc_base/ref_count.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" #include "rtc_base/weak_ptr.h" namespace webrtc { diff --git a/modules/video_coding/utility/quality_scaler.cc b/modules/video_coding/utility/quality_scaler.cc index d7e8b57e80..28252b4cfa 100644 --- a/modules/video_coding/utility/quality_scaler.cc +++ b/modules/video_coding/utility/quality_scaler.cc @@ -19,7 +19,6 @@ #include "rtc_base/experiments/quality_scaler_settings.h" #include "rtc_base/logging.h" #include "rtc_base/numerics/exp_filter.h" -#include "rtc_base/task_queue.h" #include "rtc_base/weak_ptr.h" // TODO(kthelgason): Some versions of Android have issues with log2. diff --git a/modules/video_coding/utility/quality_scaler.h b/modules/video_coding/utility/quality_scaler.h index 898bb7211f..93014e36a7 100644 --- a/modules/video_coding/utility/quality_scaler.h +++ b/modules/video_coding/utility/quality_scaler.h @@ -24,7 +24,6 @@ #include "rtc_base/numerics/moving_average.h" #include "rtc_base/ref_count.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" namespace webrtc { diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn index 4648fd4b8d..b7394db3b2 100644 --- a/test/fuzzers/BUILD.gn +++ b/test/fuzzers/BUILD.gn @@ -620,6 +620,7 @@ webrtc_fuzzer_test("rtp_frame_reference_finder_fuzzer") { webrtc_fuzzer_test("frame_buffer2_fuzzer") { sources = [ "frame_buffer2_fuzzer.cc" ] deps = [ + "../../api/task_queue", "../../modules/video_coding/", "../../modules/video_coding/timing:timing_module", "../../test:scoped_key_value_config", diff --git a/test/fuzzers/frame_buffer2_fuzzer.cc b/test/fuzzers/frame_buffer2_fuzzer.cc index 32ac6be853..944f0699d9 100644 --- a/test/fuzzers/frame_buffer2_fuzzer.cc +++ b/test/fuzzers/frame_buffer2_fuzzer.cc @@ -8,6 +8,9 @@ * be found in the AUTHORS file in the root of the source tree. */ +#include + +#include "api/task_queue/task_queue_base.h" #include "modules/video_coding/frame_buffer2.h" #include "modules/video_coding/timing/timing.h" #include "test/scoped_key_value_config.h" @@ -66,9 +69,9 @@ void FuzzOneInput(const uint8_t* data, size_t size) { } DataReader reader(data, size); GlobalSimulatedTimeController time_controller(Timestamp::Seconds(0)); - rtc::TaskQueue task_queue( + std::unique_ptr task_queue = time_controller.GetTaskQueueFactory()->CreateTaskQueue( - "time_tq", TaskQueueFactory::Priority::NORMAL)); + "time_tq", TaskQueueFactory::Priority::NORMAL); test::ScopedKeyValueConfig field_trials; VCMTiming timing(time_controller.GetClock(), field_trials); video_coding::FrameBuffer frame_buffer(time_controller.GetClock(), &timing, @@ -94,11 +97,11 @@ void FuzzOneInput(const uint8_t* data, size_t size) { next_frame_task_running = true; bool keyframe_required = reader.GetNum() % 2; int max_wait_time_ms = reader.GetNum(); - task_queue.PostTask([&task_queue, &frame_buffer, - &next_frame_task_running, keyframe_required, - max_wait_time_ms] { + task_queue->PostTask([&task_queue, &frame_buffer, + &next_frame_task_running, keyframe_required, + max_wait_time_ms] { frame_buffer.NextFrame( - max_wait_time_ms, keyframe_required, &task_queue, + max_wait_time_ms, keyframe_required, task_queue.get(), [&next_frame_task_running](std::unique_ptr frame) { next_frame_task_running = false; }); diff --git a/video/BUILD.gn b/video/BUILD.gn index 80088e4cfc..c60d9df141 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -276,7 +276,6 @@ rtc_library("frame_buffer_proxy") { "../rtc_base:checks", "../rtc_base:logging", "../rtc_base:macromagic", - "../rtc_base:rtc_task_queue", "../system_wrappers", "../system_wrappers:field_trial", ] diff --git a/video/adaptation/BUILD.gn b/video/adaptation/BUILD.gn index b2f5f275c7..aadf615fea 100644 --- a/video/adaptation/BUILD.gn +++ b/video/adaptation/BUILD.gn @@ -55,7 +55,6 @@ rtc_library("video_adaptation") { "../../rtc_base:refcount", "../../rtc_base:rtc_event", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base:safe_conversions", "../../rtc_base:stringutils", "../../rtc_base:timeutils", @@ -108,7 +107,6 @@ if (rtc_include_tests) { "../../rtc_base:rtc_base_tests_utils", "../../rtc_base:rtc_event", "../../rtc_base:rtc_numerics", - "../../rtc_base:rtc_task_queue", "../../rtc_base:task_queue_for_test", "../../rtc_base:threading", "../../test:field_trial", diff --git a/video/adaptation/bandwidth_quality_scaler_resource.h b/video/adaptation/bandwidth_quality_scaler_resource.h index bec864bcbe..a57c9907a4 100644 --- a/video/adaptation/bandwidth_quality_scaler_resource.h +++ b/video/adaptation/bandwidth_quality_scaler_resource.h @@ -23,7 +23,6 @@ #include "call/adaptation/degradation_preference_provider.h" #include "call/adaptation/resource_adaptation_processor_interface.h" #include "modules/video_coding/utility/bandwidth_quality_scaler.h" -#include "rtc_base/task_queue.h" #include "video/adaptation/video_stream_encoder_resource.h" namespace webrtc { diff --git a/video/adaptation/encode_usage_resource.h b/video/adaptation/encode_usage_resource.h index 689ae70433..c391132e57 100644 --- a/video/adaptation/encode_usage_resource.h +++ b/video/adaptation/encode_usage_resource.h @@ -17,7 +17,6 @@ #include "absl/types/optional.h" #include "api/scoped_refptr.h" #include "api/video/video_adaptation_reason.h" -#include "rtc_base/task_queue.h" #include "video/adaptation/overuse_frame_detector.h" #include "video/adaptation/video_stream_encoder_resource.h" diff --git a/video/adaptation/quality_scaler_resource.h b/video/adaptation/quality_scaler_resource.h index 6e4b83f892..cbb6d3d06f 100644 --- a/video/adaptation/quality_scaler_resource.h +++ b/video/adaptation/quality_scaler_resource.h @@ -22,7 +22,6 @@ #include "call/adaptation/degradation_preference_provider.h" #include "call/adaptation/resource_adaptation_processor_interface.h" #include "modules/video_coding/utility/quality_scaler.h" -#include "rtc_base/task_queue.h" #include "video/adaptation/video_stream_encoder_resource.h" namespace webrtc { diff --git a/video/adaptation/video_stream_encoder_resource_manager.cc b/video/adaptation/video_stream_encoder_resource_manager.cc index bd04e5b301..2470bc8893 100644 --- a/video/adaptation/video_stream_encoder_resource_manager.cc +++ b/video/adaptation/video_stream_encoder_resource_manager.cc @@ -308,14 +308,13 @@ VideoStreamEncoderResourceManager::~VideoStreamEncoderResourceManager() = default; void VideoStreamEncoderResourceManager::Initialize( - rtc::TaskQueue* encoder_queue) { + TaskQueueBase* encoder_queue) { RTC_DCHECK(!encoder_queue_); RTC_DCHECK(encoder_queue); encoder_queue_ = encoder_queue; - encode_usage_resource_->RegisterEncoderTaskQueue(encoder_queue_->Get()); - quality_scaler_resource_->RegisterEncoderTaskQueue(encoder_queue_->Get()); - bandwidth_quality_scaler_resource_->RegisterEncoderTaskQueue( - encoder_queue_->Get()); + encode_usage_resource_->RegisterEncoderTaskQueue(encoder_queue_); + quality_scaler_resource_->RegisterEncoderTaskQueue(encoder_queue_); + bandwidth_quality_scaler_resource_->RegisterEncoderTaskQueue(encoder_queue_); } void VideoStreamEncoderResourceManager::SetAdaptationProcessor( @@ -374,7 +373,7 @@ void VideoStreamEncoderResourceManager::MaybeInitializePixelLimitResource() { // resource is active for the lifetme of the stream (until // StopManagedResources() is called). pixel_limit_resource_ = - PixelLimitResource::Create(encoder_queue_->Get(), input_state_provider_); + PixelLimitResource::Create(encoder_queue_, input_state_provider_); pixel_limit_resource_->SetMaxPixels(max_pixels); AddResource(pixel_limit_resource_, VideoAdaptationReason::kCpu); } diff --git a/video/adaptation/video_stream_encoder_resource_manager.h b/video/adaptation/video_stream_encoder_resource_manager.h index 00c13e3663..61660dd42b 100644 --- a/video/adaptation/video_stream_encoder_resource_manager.h +++ b/video/adaptation/video_stream_encoder_resource_manager.h @@ -40,7 +40,6 @@ #include "rtc_base/ref_count.h" #include "rtc_base/strings/string_builder.h" #include "rtc_base/synchronization/mutex.h" -#include "rtc_base/task_queue.h" #include "rtc_base/thread_annotations.h" #include "system_wrappers/include/clock.h" #include "video/adaptation/balanced_constraint.h" @@ -84,7 +83,7 @@ class VideoStreamEncoderResourceManager const FieldTrialsView& field_trials); ~VideoStreamEncoderResourceManager() override; - void Initialize(rtc::TaskQueue* encoder_queue); + void Initialize(TaskQueueBase* encoder_queue); void SetAdaptationProcessor( ResourceAdaptationProcessorInterface* adaptation_processor, VideoStreamAdapter* stream_adapter); @@ -196,7 +195,7 @@ class VideoStreamEncoderResourceManager const rtc::scoped_refptr bandwidth_quality_scaler_resource_; - rtc::TaskQueue* encoder_queue_; + TaskQueueBase* encoder_queue_; VideoStreamInputStateProvider* const input_state_provider_ RTC_GUARDED_BY(encoder_queue_); ResourceAdaptationProcessorInterface* adaptation_processor_; diff --git a/video/call_stats2.h b/video/call_stats2.h index 760f7a0f24..7e941d1e75 100644 --- a/video/call_stats2.h +++ b/video/call_stats2.h @@ -15,10 +15,10 @@ #include #include "api/task_queue/pending_task_safety_flag.h" +#include "api/task_queue/task_queue_base.h" #include "api/units/timestamp.h" #include "modules/include/module_common_types.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" -#include "rtc_base/task_queue.h" #include "rtc_base/task_utils/repeating_task.h" #include "system_wrappers/include/clock.h" diff --git a/video/call_stats2_unittest.cc b/video/call_stats2_unittest.cc index 9d33bb3c00..76abbcfebd 100644 --- a/video/call_stats2_unittest.cc +++ b/video/call_stats2_unittest.cc @@ -13,6 +13,7 @@ #include #include "api/task_queue/default_task_queue_factory.h" +#include "api/task_queue/task_queue_base.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "rtc_base/thread.h" #include "system_wrappers/include/metrics.h" @@ -42,20 +43,21 @@ class CallStats2Test : public ::testing::Test { // Queues an rtt update call on the process thread. void AsyncSimulateRttUpdate(int64_t rtt) { RtcpRttStats* rtcp_rtt_stats = call_stats_.AsRtcpRttStats(); - task_queue_.PostTask( + task_queue_->PostTask( [rtcp_rtt_stats, rtt] { rtcp_rtt_stats->OnRttUpdate(rtt); }); } protected: void FlushProcessAndWorker() { - task_queue_.PostTask([this] { loop_.PostTask([this] { loop_.Quit(); }); }); + task_queue_->PostTask([this] { loop_.PostTask([this] { loop_.Quit(); }); }); loop_.Run(); } test::RunLoop loop_; - rtc::TaskQueue task_queue_{CreateDefaultTaskQueueFactory()->CreateTaskQueue( - "CallStats", - TaskQueueFactory::Priority::NORMAL)}; + std::unique_ptr task_queue_ = + CreateDefaultTaskQueueFactory()->CreateTaskQueue( + "CallStats", + TaskQueueFactory::Priority::NORMAL); // Note: Since rtc::Thread doesn't support injecting a Clock, we're going // to be using a mix of the fake clock (used by CallStats) as well as the diff --git a/video/frame_buffer_proxy.cc b/video/frame_buffer_proxy.cc index d42752862c..e54cd59d1f 100644 --- a/video/frame_buffer_proxy.cc +++ b/video/frame_buffer_proxy.cc @@ -17,6 +17,7 @@ #include "absl/base/attributes.h" #include "absl/functional/bind_front.h" #include "api/sequence_checker.h" +#include "api/task_queue/task_queue_base.h" #include "api/units/data_size.h" #include "api/video/encoded_frame.h" #include "api/video/frame_buffer.h" @@ -41,7 +42,7 @@ class FrameBuffer2Proxy : public FrameBufferProxy { FrameBuffer2Proxy(Clock* clock, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_proxy, - rtc::TaskQueue* decode_queue, + TaskQueueBase* decode_queue, FrameSchedulingReceiver* receiver, TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, @@ -127,7 +128,7 @@ class FrameBuffer2Proxy : public FrameBufferProxy { const TimeDelta max_wait_for_keyframe_; const TimeDelta max_wait_for_frame_; video_coding::FrameBuffer frame_buffer_; - rtc::TaskQueue* const decode_queue_; + TaskQueueBase* const decode_queue_; VCMReceiveStatisticsCallback* const stats_proxy_; FrameSchedulingReceiver* const receiver_; rtc::scoped_refptr decode_safety_ = @@ -179,7 +180,7 @@ class FrameBuffer3Proxy : public FrameBufferProxy { TaskQueueBase* worker_queue, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_proxy, - rtc::TaskQueue* decode_queue, + TaskQueueBase* decode_queue, FrameSchedulingReceiver* receiver, TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, @@ -490,7 +491,7 @@ class FrameBuffer3Proxy : public FrameBufferProxy { RttMultExperiment::GetRttMultValue(); Clock* const clock_; TaskQueueBase* const worker_queue_; - rtc::TaskQueue* const decode_queue_; + TaskQueueBase* const decode_queue_; VCMReceiveStatisticsCallback* const stats_proxy_; FrameSchedulingReceiver* const receiver_; VCMTiming* const timing_; @@ -556,7 +557,7 @@ std::unique_ptr FrameBufferProxy::CreateFromFieldTrial( TaskQueueBase* worker_queue, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_proxy, - rtc::TaskQueue* decode_queue, + TaskQueueBase* decode_queue, FrameSchedulingReceiver* receiver, TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, diff --git a/video/frame_buffer_proxy.h b/video/frame_buffer_proxy.h index 16f8fc5112..1d440ed955 100644 --- a/video/frame_buffer_proxy.h +++ b/video/frame_buffer_proxy.h @@ -19,7 +19,6 @@ #include "api/video/encoded_frame.h" #include "modules/video_coding/include/video_coding_defines.h" #include "modules/video_coding/timing/timing.h" -#include "rtc_base/task_queue.h" #include "system_wrappers/include/clock.h" #include "video/decode_synchronizer.h" @@ -44,7 +43,7 @@ class FrameBufferProxy { TaskQueueBase* worker_queue, VCMTiming* timing, VCMReceiveStatisticsCallback* stats_proxy, - rtc::TaskQueue* decode_queue, + TaskQueueBase* decode_queue, FrameSchedulingReceiver* receiver, TimeDelta max_wait_for_keyframe, TimeDelta max_wait_for_frame, diff --git a/video/frame_buffer_proxy_unittest.cc b/video/frame_buffer_proxy_unittest.cc index 6babcdada9..ba7925ad60 100644 --- a/video/frame_buffer_proxy_unittest.cc +++ b/video/frame_buffer_proxy_unittest.cc @@ -132,7 +132,7 @@ class FrameBufferProxyFixture run_loop_.task_queue(), &timing_, &stats_callback_, - &decode_queue_, + decode_queue_.Get(), this, kMaxWaitForKeyframe, kMaxWaitForFrame, diff --git a/video/rtp_streams_synchronizer2.h b/video/rtp_streams_synchronizer2.h index 73fd604892..7042b1bd9a 100644 --- a/video/rtp_streams_synchronizer2.h +++ b/video/rtp_streams_synchronizer2.h @@ -14,8 +14,8 @@ #include #include "api/sequence_checker.h" +#include "api/task_queue/task_queue_base.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" #include "rtc_base/task_utils/repeating_task.h" #include "video/stream_synchronization.h" diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc index 106dc4ded2..4fb2f9cf26 100644 --- a/video/video_receive_stream2.cc +++ b/video/video_receive_stream2.cc @@ -55,7 +55,6 @@ #include "rtc_base/logging.h" #include "rtc_base/strings/string_builder.h" #include "rtc_base/synchronization/mutex.h" -#include "rtc_base/task_queue.h" #include "rtc_base/thread_annotations.h" #include "rtc_base/time_utils.h" #include "rtc_base/trace_event.h" @@ -268,7 +267,7 @@ VideoReceiveStream2::VideoReceiveStream2( frame_buffer_ = FrameBufferProxy::CreateFromFieldTrial( clock_, call_->worker_thread(), timing_.get(), &stats_proxy_, - &decode_queue_, this, max_wait_for_keyframe_, max_wait_for_frame_, + decode_queue_.Get(), this, max_wait_for_keyframe_, max_wait_for_frame_, decode_sync_, call_->trials()); if (rtx_ssrc()) { diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc index 5320336bdf..799e366ba3 100644 --- a/video/video_send_stream.cc +++ b/video/video_send_stream.cc @@ -149,7 +149,7 @@ VideoSendStream::VideoSendStream( const std::map& suspended_payload_states, std::unique_ptr fec_controller, const FieldTrialsView& field_trials) - : rtp_transport_queue_(transport->GetWorkerQueue()), + : rtp_transport_queue_(transport->GetWorkerQueue()->Get()), transport_(transport), stats_proxy_(clock, config, encoder_config.content_type, field_trials), config_(std::move(config)), diff --git a/video/video_send_stream.h b/video/video_send_stream.h index 0faebf94ca..d495133bfa 100644 --- a/video/video_send_stream.h +++ b/video/video_send_stream.h @@ -25,7 +25,6 @@ #include "call/video_send_stream.h" #include "rtc_base/event.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" #include "video/encoder_rtcp_feedback.h" #include "video/send_delay_stats.h" #include "video/send_statistics_proxy.h" @@ -100,7 +99,7 @@ class VideoSendStream : public webrtc::VideoSendStream { absl::optional GetPacingFactorOverride() const; RTC_NO_UNIQUE_ADDRESS SequenceChecker thread_checker_; - rtc::TaskQueue* const rtp_transport_queue_; + TaskQueueBase* const rtp_transport_queue_; RtpTransportControllerSendInterface* const transport_; rtc::Event thread_sync_event_; rtc::scoped_refptr transport_queue_safety_ = diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc index 6a406a4a3e..2032c4cb58 100644 --- a/video/video_send_stream_impl.cc +++ b/video/video_send_stream_impl.cc @@ -202,7 +202,7 @@ PacingConfig::~PacingConfig() = default; VideoSendStreamImpl::VideoSendStreamImpl( Clock* clock, SendStatisticsProxy* stats_proxy, - rtc::TaskQueue* rtp_transport_queue, + TaskQueueBase* rtp_transport_queue, RtpTransportControllerSendInterface* transport, BitrateAllocatorInterface* bitrate_allocator, VideoStreamEncoderInterface* video_stream_encoder, @@ -341,7 +341,7 @@ void VideoSendStreamImpl::StartupVideoSendStream() { activity_ = false; timed_out_ = false; check_encoder_activity_task_ = RepeatingTaskHandle::DelayedStart( - rtp_transport_queue_->Get(), kEncoderTimeOut, [this] { + rtp_transport_queue_, kEncoderTimeOut, [this] { RTC_DCHECK_RUN_ON(rtp_transport_queue_); if (!activity_) { if (!timed_out_) { diff --git a/video/video_send_stream_impl.h b/video/video_send_stream_impl.h index 26f8d2ec2b..d6ce47f8c7 100644 --- a/video/video_send_stream_impl.h +++ b/video/video_send_stream_impl.h @@ -21,6 +21,7 @@ #include "absl/types/optional.h" #include "api/field_trials_view.h" #include "api/task_queue/pending_task_safety_flag.h" +#include "api/task_queue/task_queue_base.h" #include "api/video/encoded_image.h" #include "api/video/video_bitrate_allocation.h" #include "api/video/video_bitrate_allocator.h" @@ -36,7 +37,6 @@ #include "modules/video_coding/include/video_codec_interface.h" #include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/system/no_unique_address.h" -#include "rtc_base/task_queue.h" #include "rtc_base/task_utils/repeating_task.h" #include "rtc_base/thread_annotations.h" #include "video/send_statistics_proxy.h" @@ -66,7 +66,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver, public: VideoSendStreamImpl(Clock* clock, SendStatisticsProxy* stats_proxy, - rtc::TaskQueue* rtp_transport_queue, + TaskQueueBase* rtp_transport_queue, RtpTransportControllerSendInterface* transport, BitrateAllocatorInterface* bitrate_allocator, VideoStreamEncoderInterface* video_stream_encoder, @@ -139,7 +139,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver, SendStatisticsProxy* const stats_proxy_; const VideoSendStream::Config* const config_; - rtc::TaskQueue* const rtp_transport_queue_; + TaskQueueBase* const rtp_transport_queue_; RepeatingTaskHandle check_encoder_activity_task_ RTC_GUARDED_BY(rtp_transport_queue_); diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc index b005a6308a..52593a8272 100644 --- a/video/video_send_stream_impl_unittest.cc +++ b/video/video_send_stream_impl_unittest.cc @@ -150,7 +150,7 @@ class VideoSendStreamImplTest : public ::testing::Test { std::map suspended_ssrcs; std::map suspended_payload_states; auto ret = std::make_unique( - &clock_, &stats_proxy_, &test_queue_, &transport_controller_, + &clock_, &stats_proxy_, test_queue_.Get(), &transport_controller_, &bitrate_allocator_, &video_stream_encoder_, &config_, initial_encoder_max_bitrate, initial_encoder_bitrate_priority, content_type, &rtp_video_sender_, field_trials_); diff --git a/video/video_stream_decoder_impl.cc b/video/video_stream_decoder_impl.cc index 5f275ff63d..91be5a0305 100644 --- a/video/video_stream_decoder_impl.cc +++ b/video/video_stream_decoder_impl.cc @@ -141,7 +141,7 @@ void VideoStreamDecoderImpl::StartNextDecode() { int64_t max_wait_time = keyframe_required_ ? 200 : 3000; frame_buffer_.NextFrame(max_wait_time, keyframe_required_, - &bookkeeping_queue_, + bookkeeping_queue_.Get(), [this](std::unique_ptr frame) { RTC_DCHECK_RUN_ON(&bookkeeping_queue_); OnNextFrameCallback(std::move(frame)); diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 827ef7b497..23dc28aa82 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -702,7 +702,7 @@ VideoStreamEncoder::VideoStreamEncoder( RTC_DCHECK_GE(number_of_cores, 1); frame_cadence_adapter_->Initialize(&cadence_callback_); - stream_resource_manager_.Initialize(&encoder_queue_); + stream_resource_manager_.Initialize(encoder_queue_.Get()); encoder_queue_.PostTask([this] { RTC_DCHECK_RUN_ON(&encoder_queue_); diff --git a/video/video_stream_encoder.h b/video/video_stream_encoder.h index 1953b91b3f..468998fb50 100644 --- a/video/video_stream_encoder.h +++ b/video/video_stream_encoder.h @@ -128,7 +128,7 @@ class VideoStreamEncoder : public VideoStreamEncoderInterface, protected: // Used for testing. For example the `ScalingObserverInterface` methods must // be called on `encoder_queue_`. - rtc::TaskQueue* encoder_queue() { return &encoder_queue_; } + TaskQueueBase* encoder_queue() { return encoder_queue_.Get(); } void OnVideoSourceRestrictionsUpdated( VideoSourceRestrictions restrictions,