diff --git a/api/task_queue/task_queue_base.h b/api/task_queue/task_queue_base.h index fade0057ce..7e42bbaead 100644 --- a/api/task_queue/task_queue_base.h +++ b/api/task_queue/task_queue_base.h @@ -15,12 +15,6 @@ #include "api/task_queue/queued_task.h" #include "rtc_base/thread_annotations.h" -// TODO(bugs.webrtc.org/10191): Remove when -// rtc::TaskQueue* rtc::TaskQueue::Current() is unused. -namespace rtc { -class TaskQueue; -} // namespace rtc - namespace webrtc { // Asynchronously executes tasks in a way that guarantees that they're executed @@ -77,10 +71,6 @@ class RTC_LOCKABLE TaskQueueBase { // Users of the TaskQueue should call Delete instead of directly deleting // this object. virtual ~TaskQueueBase() = default; - - private: - friend class rtc::TaskQueue; - rtc::TaskQueue* task_queue_ = nullptr; }; struct TaskQueueDeleter { diff --git a/audio/BUILD.gn b/audio/BUILD.gn index 9e0bb9f1a9..488d62d0e5 100644 --- a/audio/BUILD.gn +++ b/audio/BUILD.gn @@ -248,6 +248,7 @@ if (rtc_include_tests) { ] deps = [ "../api:simulated_network_api", + "../api/task_queue", "../call:fake_network", "../call:simulated_network", "../common_audio", diff --git a/audio/test/audio_bwe_integration_test.cc b/audio/test/audio_bwe_integration_test.cc index 2e3c15861a..d5d0260e6d 100644 --- a/audio/test/audio_bwe_integration_test.cc +++ b/audio/test/audio_bwe_integration_test.cc @@ -11,6 +11,7 @@ #include "audio/test/audio_bwe_integration_test.h" #include "absl/memory/memory.h" +#include "api/task_queue/task_queue_base.h" #include "call/fake_network_pipe.h" #include "call/simulated_network.h" #include "common_audio/wav_file.h" @@ -89,8 +90,8 @@ class StatsPollTask : public rtc::QueuedTask { RTC_CHECK(sender_call_); Call::Stats call_stats = sender_call_->GetStats(); EXPECT_GT(call_stats.send_bandwidth_bps, 25000); - rtc::TaskQueue::Current()->PostDelayedTask( - std::unique_ptr(this), 100); + TaskQueueBase::Current()->PostDelayedTask(std::unique_ptr(this), + 100); return false; } Call* sender_call_; diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 60dfdb6b1b..8f6fa0c71a 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -572,6 +572,7 @@ if (rtc_include_tests) { "../..:webrtc_common", "../../api:scoped_refptr", "../../api:videocodec_test_fixture_api", + "../../api/task_queue", "../../api/video:builtin_video_bitrate_allocator_factory", "../../api/video:encoded_image", "../../api/video:video_bitrate_allocation", @@ -586,6 +587,7 @@ if (rtc_include_tests) { "../../rtc_base:rtc_task_queue", "../../rtc_base:rtc_task_queue_for_test", "../../rtc_base:sequenced_task_checker", + "../../rtc_base/task_utils:to_queued_task", "../../test:test_support", "../../test:video_test_common", "../../test:video_test_support", diff --git a/modules/video_coding/codecs/test/videoprocessor.cc b/modules/video_coding/codecs/test/videoprocessor.cc index 7458006cb0..f978338f51 100644 --- a/modules/video_coding/codecs/test/videoprocessor.cc +++ b/modules/video_coding/codecs/test/videoprocessor.cc @@ -31,6 +31,7 @@ #include "modules/video_coding/codecs/interface/common_constants.h" #include "modules/video_coding/include/video_error_codes.h" #include "rtc_base/checks.h" +#include "rtc_base/task_utils/to_queued_task.h" #include "rtc_base/time_utils.h" #include "test/gtest.h" #include "third_party/libyuv/include/libyuv/compare.h" @@ -191,7 +192,7 @@ VideoProcessor::VideoProcessor(webrtc::VideoEncoder* encoder, decoded_frame_buffer_(num_simulcast_or_spatial_layers_), post_encode_time_ns_(0) { // Sanity checks. - RTC_CHECK(rtc::TaskQueue::Current()) + RTC_CHECK(TaskQueueBase::Current()) << "VideoProcessor must be run on a task queue."; RTC_CHECK(encoder); RTC_CHECK(decoders); @@ -321,9 +322,9 @@ int32_t VideoProcessor::VideoProcessorDecodeCompleteCallback::Decoded( .build(); copy.set_timestamp(image.timestamp()); - task_queue_->PostTask([this, copy]() { + task_queue_->PostTask(ToQueuedTask([this, copy]() { video_processor_->FrameDecoded(copy, simulcast_svc_idx_); - }); + })); return 0; } video_processor_->FrameDecoded(image, simulcast_svc_idx_); diff --git a/modules/video_coding/codecs/test/videoprocessor.h b/modules/video_coding/codecs/test/videoprocessor.h index e691478c41..618213095d 100644 --- a/modules/video_coding/codecs/test/videoprocessor.h +++ b/modules/video_coding/codecs/test/videoprocessor.h @@ -18,6 +18,7 @@ #include #include "absl/types/optional.h" +#include "api/task_queue/task_queue_base.h" #include "api/test/videocodec_test_fixture.h" #include "api/test/videocodec_test_stats.h" #include "api/video/encoded_image.h" @@ -79,7 +80,7 @@ class VideoProcessor { explicit VideoProcessorEncodeCompleteCallback( VideoProcessor* video_processor) : video_processor_(video_processor), - task_queue_(rtc::TaskQueue::Current()) { + task_queue_(TaskQueueBase::Current()) { RTC_DCHECK(video_processor_); RTC_DCHECK(task_queue_); } @@ -126,7 +127,7 @@ class VideoProcessor { }; VideoProcessor* const video_processor_; - rtc::TaskQueue* const task_queue_; + TaskQueueBase* const task_queue_; }; class VideoProcessorDecodeCompleteCallback @@ -137,7 +138,7 @@ class VideoProcessor { size_t simulcast_svc_idx) : video_processor_(video_processor), simulcast_svc_idx_(simulcast_svc_idx), - task_queue_(rtc::TaskQueue::Current()) { + task_queue_(TaskQueueBase::Current()) { RTC_DCHECK(video_processor_); RTC_DCHECK(task_queue_); } @@ -158,7 +159,7 @@ class VideoProcessor { private: VideoProcessor* const video_processor_; const size_t simulcast_svc_idx_; - rtc::TaskQueue* const task_queue_; + TaskQueueBase* const task_queue_; }; // Invoked by the callback adapter when a frame has completed encoding. diff --git a/rtc_base/task_queue.cc b/rtc_base/task_queue.cc index ed489eb826..d11b34eacc 100644 --- a/rtc_base/task_queue.cc +++ b/rtc_base/task_queue.cc @@ -16,9 +16,7 @@ namespace rtc { TaskQueue::TaskQueue( std::unique_ptr task_queue) - : impl_(task_queue.release()) { - impl_->task_queue_ = this; -} + : impl_(task_queue.release()) {} TaskQueue::TaskQueue(const char* queue_name, Priority priority) : TaskQueue(webrtc::GlobalTaskQueueFactory().CreateTaskQueue(queue_name, @@ -32,17 +30,8 @@ TaskQueue::~TaskQueue() { impl_->Delete(); } -// static -TaskQueue* TaskQueue::Current() { - webrtc::TaskQueueBase* impl = webrtc::TaskQueueBase::Current(); - if (impl == nullptr) { - return nullptr; - } - return impl->task_queue_; -} - bool TaskQueue::IsCurrent() const { - return Current() == this; + return impl_->IsCurrent(); } void TaskQueue::PostTask(std::unique_ptr task) { diff --git a/rtc_base/task_queue.h b/rtc_base/task_queue.h index 1c0ae297ee..c42ce0f33e 100644 --- a/rtc_base/task_queue.h +++ b/rtc_base/task_queue.h @@ -57,8 +57,8 @@ using ::webrtc::QueuedTask; // private: // bool Run() override { // ++count_; -// TaskQueue::Current()->PostDelayedTask( -// std::unique_ptr(this), 1000); +// TaskQueueBase::Current()->PostDelayedTask( +// absl::WrapUnique(this), 1000); // // Ownership has been transferred to the next occurance, // // so return false to prevent from being deleted now. // return false; @@ -66,8 +66,7 @@ using ::webrtc::QueuedTask; // int count_ = 0; // }; // ... -// queue_.PostDelayedTask( -// std::unique_ptr(new TimerTask()), 1000); +// queue_.PostDelayedTask(absl::make_unique(), 1000); // // For more examples, see task_queue_unittests.cc. // @@ -90,8 +89,6 @@ class RTC_LOCKABLE RTC_EXPORT TaskQueue { Priority priority = Priority::NORMAL); ~TaskQueue(); - static TaskQueue* Current(); - // Used for DCHECKing the current queue. bool IsCurrent() const; diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn index bd1a64bf05..5152edf89c 100644 --- a/rtc_tools/network_tester/BUILD.gn +++ b/rtc_tools/network_tester/BUILD.gn @@ -43,6 +43,7 @@ if (rtc_enable_protobuf) { deps = [ ":network_tester_config_proto", ":network_tester_packet_proto", + "../../api/task_queue", "../../p2p", "../../rtc_base:checks", "../../rtc_base:protobuf_utils", diff --git a/rtc_tools/network_tester/packet_sender.cc b/rtc_tools/network_tester/packet_sender.cc index 62b93e34c2..374d2ec4a6 100644 --- a/rtc_tools/network_tester/packet_sender.cc +++ b/rtc_tools/network_tester/packet_sender.cc @@ -16,6 +16,7 @@ #include #include "absl/types/optional.h" +#include "api/task_queue/task_queue_base.h" #include "rtc_base/time_utils.h" #include "rtc_tools/network_tester/config_reader.h" #include "rtc_tools/network_tester/test_controller.h" @@ -36,7 +37,7 @@ class SendPacketTask : public rtc::QueuedTask { target_time_ms_ += packet_sender_->GetSendIntervalMs(); int64_t delay_ms = std::max(static_cast(0), target_time_ms_ - rtc::TimeMillis()); - rtc::TaskQueue::Current()->PostDelayedTask( + TaskQueueBase::Current()->PostDelayedTask( std::unique_ptr(this), delay_ms); return false; } else { @@ -60,7 +61,7 @@ class UpdateTestSettingTask : public rtc::QueuedTask { if (config) { packet_sender_->UpdateTestSetting((*config).packet_size, (*config).packet_send_interval_ms); - rtc::TaskQueue::Current()->PostDelayedTask( + TaskQueueBase::Current()->PostDelayedTask( std::unique_ptr(this), (*config).execution_time_ms); return false; } else { diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 663dffb322..78427f7cf9 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -621,6 +621,7 @@ if (is_android) { ":videoframe_jni", "../..:webrtc_common", "../../api:scoped_refptr", + "../../api/task_queue", "../../api/video_codecs:video_codecs_api", "../../common_video:common_video", "../../media:rtc_internal_video_codecs", @@ -679,6 +680,7 @@ if (is_android) { ":videoframe_jni", "../..:webrtc_common", "../../api:libjingle_peerconnection_api", + "../../api/task_queue", "../../api/video:encoded_image", "../../api/video:video_frame", "../../api/video_codecs:rtc_software_fallback_wrappers", @@ -691,6 +693,7 @@ if (is_android) { "../../rtc_base:checks", "../../rtc_base:rtc_base", "../../rtc_base:rtc_task_queue", + "../../rtc_base/task_utils:to_queued_task", "//third_party/libyuv", ] } diff --git a/sdk/android/src/jni/android_media_encoder.cc b/sdk/android/src/jni/android_media_encoder.cc index 16402649d2..973f4f6baa 100644 --- a/sdk/android/src/jni/android_media_encoder.cc +++ b/sdk/android/src/jni/android_media_encoder.cc @@ -14,6 +14,7 @@ #include #include +#include "api/task_queue/task_queue_base.h" #include "api/video_codecs/sdp_video_format.h" #include "api/video_codecs/video_encoder.h" #include "common_types.h" // NOLINT(build/include) @@ -416,10 +417,10 @@ bool MediaCodecVideoEncoder::EncodeTask::Run() { // If there aren't more frames to deliver, we can start polling at lower rate. if (encoder_->input_frame_infos_.empty()) { - rtc::TaskQueue::Current()->PostDelayedTask( + TaskQueueBase::Current()->PostDelayedTask( std::unique_ptr(this), kMediaCodecPollNoFramesMs); } else { - rtc::TaskQueue::Current()->PostDelayedTask( + TaskQueueBase::Current()->PostDelayedTask( std::unique_ptr(this), kMediaCodecPollMs); } @@ -741,8 +742,8 @@ int32_t MediaCodecVideoEncoder::Encode( // Start the polling loop if it is not started. if (encode_task_) { - rtc::TaskQueue::Current()->PostDelayedTask(std::move(encode_task_), - kMediaCodecPollMs); + TaskQueueBase::Current()->PostDelayedTask(std::move(encode_task_), + kMediaCodecPollMs); } if (!DeliverPendingOutputs(jni)) { diff --git a/sdk/android/src/jni/video_encoder_wrapper.cc b/sdk/android/src/jni/video_encoder_wrapper.cc index 76579e3501..7d93e0a5ea 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.cc +++ b/sdk/android/src/jni/video_encoder_wrapper.cc @@ -18,6 +18,7 @@ #include "modules/video_coding/utility/vp8_header_parser.h" #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h" #include "rtc_base/logging.h" +#include "rtc_base/task_utils/to_queued_task.h" #include "rtc_base/time_utils.h" #include "sdk/android/generated_video_jni/jni/VideoEncoderWrapper_jni.h" #include "sdk/android/generated_video_jni/jni/VideoEncoder_jni.h" @@ -47,7 +48,7 @@ int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings, num_resets_ = 0; { rtc::CritScope lock(&encoder_queue_crit_); - encoder_queue_ = rtc::TaskQueue::Current(); + encoder_queue_ = TaskQueueBase::Current(); } return InitEncodeInternal(jni); @@ -293,10 +294,10 @@ void VideoEncoderWrapper::OnEncodedFrame(JNIEnv* jni, { rtc::CritScope lock(&encoder_queue_crit_); if (encoder_queue_ != nullptr) { - encoder_queue_->PostTask( + encoder_queue_->PostTask(ToQueuedTask( Lambda{this, std::move(buffer_copy), qp, encoded_width, encoded_height, capture_time_ns, frame_type, rotation, - complete_frame, &frame_extra_infos_, callback_}); + complete_frame, &frame_extra_infos_, callback_})); } } } diff --git a/sdk/android/src/jni/video_encoder_wrapper.h b/sdk/android/src/jni/video_encoder_wrapper.h index de2d67b5ea..f6f86abb43 100644 --- a/sdk/android/src/jni/video_encoder_wrapper.h +++ b/sdk/android/src/jni/video_encoder_wrapper.h @@ -16,10 +16,10 @@ #include #include +#include "api/task_queue/task_queue_base.h" #include "api/video_codecs/video_encoder.h" #include "common_video/h264/h264_bitstream_parser.h" #include "modules/video_coding/codecs/vp9/include/vp9_globals.h" -#include "rtc_base/task_queue.h" #include "sdk/android/src/jni/jni_helpers.h" #include "sdk/android/src/jni/video_frame.h" @@ -92,7 +92,7 @@ class VideoEncoderWrapper : public VideoEncoder { const ScopedJavaGlobalRef int_array_class_; rtc::CriticalSection encoder_queue_crit_; - rtc::TaskQueue* encoder_queue_ RTC_GUARDED_BY(encoder_queue_crit_); + TaskQueueBase* encoder_queue_ RTC_GUARDED_BY(encoder_queue_crit_); std::deque frame_extra_infos_; EncodedImageCallback* callback_; bool initialized_;