Migrate RtcpTransceiver to use webrtc::TaskQueueBase instead of rtc::TaskQueue
This changes removes an extra layer of indirection
since RtcpTransceiver doesn't own TaskQueue it uses.
Bug: None
Change-Id: Ie1ef4cd8c3fb18a8e0b7ddaf0d6a319392b9e9f7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126040
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30704}
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 9e6221e..19a2c13 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -320,10 +320,10 @@
"../../api:array_view",
"../../api:rtp_headers",
"../../api:transport_api",
+ "../../api/task_queue",
"../../api/video:video_bitrate_allocation",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
- "../../rtc_base:rtc_task_queue",
"../../rtc_base/task_utils:repeating_task",
"../../rtc_base/task_utils:to_queued_task",
"../../system_wrappers",
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver.cc b/modules/rtp_rtcp/source/rtcp_transceiver.cc
index 2060b0b..1de5818 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver.cc
@@ -32,9 +32,10 @@
if (!rtcp_transceiver_)
return;
auto rtcp_transceiver = std::move(rtcp_transceiver_);
- task_queue_->PostTask([rtcp_transceiver = std::move(rtcp_transceiver)] {
- rtcp_transceiver->StopPeriodicTask();
- });
+ task_queue_->PostTask(
+ ToQueuedTask([rtcp_transceiver = std::move(rtcp_transceiver)] {
+ rtcp_transceiver->StopPeriodicTask();
+ }));
RTC_DCHECK(!rtcp_transceiver_);
}
@@ -54,9 +55,9 @@
MediaReceiverRtcpObserver* observer) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr, remote_ssrc, observer] {
+ task_queue_->PostTask(ToQueuedTask([ptr, remote_ssrc, observer] {
ptr->AddMediaReceiverRtcpObserver(remote_ssrc, observer);
- });
+ }));
}
void RtcpTransceiver::RemoveMediaReceiverRtcpObserver(
@@ -74,36 +75,38 @@
void RtcpTransceiver::SetReadyToSend(bool ready) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr, ready] { ptr->SetReadyToSend(ready); });
+ task_queue_->PostTask(
+ ToQueuedTask([ptr, ready] { ptr->SetReadyToSend(ready); }));
}
void RtcpTransceiver::ReceivePacket(rtc::CopyOnWriteBuffer packet) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
int64_t now_us = rtc::TimeMicros();
- task_queue_->PostTask(
- [ptr, packet, now_us] { ptr->ReceivePacket(packet, now_us); });
+ task_queue_->PostTask(ToQueuedTask(
+ [ptr, packet, now_us] { ptr->ReceivePacket(packet, now_us); }));
}
void RtcpTransceiver::SendCompoundPacket() {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr] { ptr->SendCompoundPacket(); });
+ task_queue_->PostTask(ToQueuedTask([ptr] { ptr->SendCompoundPacket(); }));
}
void RtcpTransceiver::SetRemb(int64_t bitrate_bps,
std::vector<uint32_t> ssrcs) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr, bitrate_bps, ssrcs = std::move(ssrcs)]() mutable {
- ptr->SetRemb(bitrate_bps, std::move(ssrcs));
- });
+ task_queue_->PostTask(
+ ToQueuedTask([ptr, bitrate_bps, ssrcs = std::move(ssrcs)]() mutable {
+ ptr->SetRemb(bitrate_bps, std::move(ssrcs));
+ }));
}
void RtcpTransceiver::UnsetRemb() {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr] { ptr->UnsetRemb(); });
+ task_queue_->PostTask(ToQueuedTask([ptr] { ptr->UnsetRemb(); }));
}
void RtcpTransceiver::SendCombinedRtcpPacket(
@@ -111,25 +114,26 @@
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
task_queue_->PostTask(
- [ptr, rtcp_packets = std::move(rtcp_packets)]() mutable {
+ ToQueuedTask([ptr, rtcp_packets = std::move(rtcp_packets)]() mutable {
ptr->SendCombinedRtcpPacket(std::move(rtcp_packets));
- });
+ }));
}
void RtcpTransceiver::SendNack(uint32_t ssrc,
std::vector<uint16_t> sequence_numbers) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask(
+ task_queue_->PostTask(ToQueuedTask(
[ptr, ssrc, sequence_numbers = std::move(sequence_numbers)]() mutable {
ptr->SendNack(ssrc, std::move(sequence_numbers));
- });
+ }));
}
void RtcpTransceiver::SendPictureLossIndication(uint32_t ssrc) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr, ssrc] { ptr->SendPictureLossIndication(ssrc); });
+ task_queue_->PostTask(
+ ToQueuedTask([ptr, ssrc] { ptr->SendPictureLossIndication(ssrc); }));
}
void RtcpTransceiver::SendFullIntraRequest(std::vector<uint32_t> ssrcs) {
@@ -140,9 +144,10 @@
bool new_request) {
RTC_CHECK(rtcp_transceiver_);
RtcpTransceiverImpl* ptr = rtcp_transceiver_.get();
- task_queue_->PostTask([ptr, ssrcs = std::move(ssrcs), new_request] {
- ptr->SendFullIntraRequest(ssrcs, new_request);
- });
+ task_queue_->PostTask(
+ ToQueuedTask([ptr, ssrcs = std::move(ssrcs), new_request] {
+ ptr->SendFullIntraRequest(ssrcs, new_request);
+ }));
}
} // namespace webrtc
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver.h b/modules/rtp_rtcp/source/rtcp_transceiver.h
index fe5c969..2d1f37c 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver.h
+++ b/modules/rtp_rtcp/source/rtcp_transceiver.h
@@ -16,10 +16,10 @@
#include <string>
#include <vector>
+#include "api/task_queue/task_queue_base.h"
#include "modules/rtp_rtcp/source/rtcp_transceiver_config.h"
#include "modules/rtp_rtcp/source/rtcp_transceiver_impl.h"
#include "rtc_base/copy_on_write_buffer.h"
-#include "rtc_base/task_queue.h"
namespace webrtc {
//
@@ -93,7 +93,7 @@
void SendFullIntraRequest(std::vector<uint32_t> ssrcs, bool new_request);
private:
- rtc::TaskQueue* const task_queue_;
+ TaskQueueBase* const task_queue_;
std::unique_ptr<RtcpTransceiverImpl> rtcp_transceiver_;
};
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_config.cc b/modules/rtp_rtcp/source/rtcp_transceiver_config.cc
index 64e034a..214d8fd 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_config.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_config.cc
@@ -58,7 +58,7 @@
<< "ms between reports should be positive.";
return false;
}
- if (schedule_periodic_compound_packets && !task_queue) {
+ if (schedule_periodic_compound_packets && task_queue == nullptr) {
RTC_LOG(LS_ERROR) << debug_id
<< "missing task queue for periodic compound packets";
return false;
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_config.h b/modules/rtp_rtcp/source/rtcp_transceiver_config.h
index 8a77e70..2cbd104 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_config.h
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_config.h
@@ -14,9 +14,9 @@
#include <string>
#include "api/rtp_headers.h"
+#include "api/task_queue/task_queue_base.h"
#include "api/video/video_bitrate_allocation.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
-#include "rtc_base/task_queue.h"
#include "system_wrappers/include/ntp_time.h"
namespace webrtc {
@@ -65,7 +65,7 @@
Transport* outgoing_transport = nullptr;
// Queue for scheduling delayed tasks, e.g. sending periodic compound packets.
- rtc::TaskQueue* task_queue = nullptr;
+ TaskQueueBase* task_queue = nullptr;
// Rtcp report block generator for outgoing receiver reports.
ReceiveStatisticsProvider* receive_statistics = nullptr;
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
index 5f2f2e0..0102616 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
@@ -32,8 +32,8 @@
#include "modules/rtp_rtcp/source/time_util.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
-#include "rtc_base/task_queue.h"
#include "rtc_base/task_utils/repeating_task.h"
+#include "rtc_base/task_utils/to_queued_task.h"
#include "rtc_base/time_utils.h"
namespace webrtc {
@@ -92,9 +92,9 @@
: config_(config), ready_to_send_(config.initial_ready_to_send) {
RTC_CHECK(config_.Validate());
if (ready_to_send_ && config_.schedule_periodic_compound_packets) {
- config_.task_queue->PostTask([this] {
+ config_.task_queue->PostTask(ToQueuedTask([this] {
SchedulePeriodicCompoundPackets(config_.initial_report_delay_ms);
- });
+ }));
}
}
@@ -342,7 +342,7 @@
void RtcpTransceiverImpl::SchedulePeriodicCompoundPackets(int64_t delay_ms) {
periodic_task_handle_ = RepeatingTaskHandle::DelayedStart(
- config_.task_queue->Get(), TimeDelta::Millis(delay_ms), [this] {
+ config_.task_queue, TimeDelta::Millis(delay_ms), [this] {
RTC_DCHECK(config_.schedule_periodic_compound_packets);
RTC_DCHECK(ready_to_send_);
SendPeriodicCompoundPacket();
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
index 47ce4a8..727a9bc 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc
@@ -141,7 +141,7 @@
FakeRtcpTransport transport;
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config = DefaultTestConfig();
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
config.schedule_periodic_compound_packets = true;
config.outgoing_transport = &transport;
auto* rtcp_transceiver = new RtcpTransceiverImpl(config);
@@ -161,7 +161,7 @@
FakeRtcpTransport transport;
auto* queue = new TaskQueueForTest("rtcp");
RtcpTransceiverConfig config = DefaultTestConfig();
- config.task_queue = queue;
+ config.task_queue = queue->Get();
config.schedule_periodic_compound_packets = true;
config.outgoing_transport = &transport;
auto* rtcp_transceiver = new RtcpTransceiverImpl(config);
@@ -178,7 +178,7 @@
RtcpTransceiverConfig config;
config.outgoing_transport = &transport;
config.initial_report_delay_ms = 10;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
absl::optional<RtcpTransceiverImpl> rtcp_transceiver;
int64_t started_ms = rtc::TimeMillis();
@@ -204,7 +204,7 @@
config.outgoing_transport = &transport;
config.initial_report_delay_ms = 0;
config.report_period_ms = kReportPeriodMs;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
absl::optional<RtcpTransceiverImpl> rtcp_transceiver;
int64_t time_just_before_1st_packet_ms = 0;
queue.PostTask([&] {
@@ -238,7 +238,7 @@
config.outgoing_transport = &transport;
config.initial_report_delay_ms = 0;
config.report_period_ms = kReportPeriodMs;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
absl::optional<RtcpTransceiverImpl> rtcp_transceiver;
queue.PostTask([&] { rtcp_transceiver.emplace(config); });
@@ -324,7 +324,7 @@
config.schedule_periodic_compound_packets = true;
config.initial_ready_to_send = false;
config.outgoing_transport = &transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
absl::optional<RtcpTransceiverImpl> rtcp_transceiver;
rtcp_transceiver.emplace(config);
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
index cd35cfb..5fb2aa5 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_unittest.cc
@@ -58,7 +58,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
EXPECT_CALL(outgoing_transport, SendRtcp(_, _))
.WillRepeatedly(InvokeWithoutArgs([&] {
EXPECT_TRUE(queue.IsCurrent());
@@ -75,7 +75,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
EXPECT_CALL(outgoing_transport, SendRtcp(_, _))
.WillRepeatedly(InvokeWithoutArgs([&] {
EXPECT_TRUE(queue.IsCurrent());
@@ -95,7 +95,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
auto rtcp_transceiver = std::make_unique<RtcpTransceiver>(config);
queue.PostTask([&] {
@@ -111,7 +111,7 @@
NiceMock<MockTransport> outgoing_transport;
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
auto* rtcp_transceiver = new RtcpTransceiver(config);
rtcp_transceiver->SendCompoundPacket();
@@ -132,7 +132,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
auto* rtcp_transceiver = new RtcpTransceiver(config);
rtc::Event heavy_task;
@@ -163,7 +163,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &null_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
RtcpTransceiver rtcp_transceiver(config);
rtc::Event observer_deleted;
@@ -190,7 +190,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &null_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
RtcpTransceiver rtcp_transceiver(config);
auto observer = std::make_unique<MockMediaReceiverRtcpObserver>();
rtcp_transceiver.AddMediaReceiverRtcpObserver(kRemoteSsrc, observer.get());
@@ -214,7 +214,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
EXPECT_CALL(outgoing_transport, SendRtcp(_, _))
// If test is slow, a periodic task may send an extra packet.
@@ -243,7 +243,7 @@
TaskQueueForTest queue("rtcp");
RtcpTransceiverConfig config;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
config.schedule_periodic_compound_packets = true;
auto rtcp_transceiver = std::make_unique<RtcpTransceiver>(config);
@@ -265,7 +265,7 @@
RtcpTransceiverConfig config;
config.feedback_ssrc = kSenderSsrc;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
config.schedule_periodic_compound_packets = false;
RtcpTransceiver rtcp_transceiver(config);
@@ -302,7 +302,7 @@
RtcpTransceiverConfig config;
config.feedback_ssrc = kSenderSsrc;
config.outgoing_transport = &outgoing_transport;
- config.task_queue = &queue;
+ config.task_queue = queue.Get();
config.schedule_periodic_compound_packets = false;
RtcpTransceiver rtcp_transceiver(config);