Migrate video/ to absl::AnyInvocable based TaskQueueBase interface
Bug: webrtc:14245
Change-Id: Ibd98d3a0c548443578953ef3e25aee9919eea3d3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267980
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37465}
diff --git a/video/BUILD.gn b/video/BUILD.gn
index ac16524..80088e4 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -74,7 +74,6 @@
"../api/rtc_event_log",
"../api/task_queue",
"../api/task_queue:pending_task_safety_flag",
- "../api/task_queue:to_queued_task",
"../api/units:frequency",
"../api/units:time_delta",
"../api/units:timestamp",
@@ -228,7 +227,6 @@
"../api:sequence_checker",
"../api/task_queue",
"../api/task_queue:pending_task_safety_flag",
- "../api/task_queue:to_queued_task",
"../api/units:time_delta",
"../api/units:timestamp",
"../api/video:video_frame",
@@ -309,7 +307,6 @@
"../api:sequence_checker",
"../api/task_queue",
"../api/task_queue:pending_task_safety_flag",
- "../api/task_queue:to_queued_task",
"../api/units:timestamp",
"../rtc_base:checks",
"../system_wrappers",
@@ -395,7 +392,6 @@
"../api/adaptation:resource_adaptation_api",
"../api/task_queue:pending_task_safety_flag",
"../api/task_queue:task_queue",
- "../api/task_queue:to_queued_task",
"../api/units:data_rate",
"../api/video:encoded_image",
"../api/video:render_resolution",
@@ -452,6 +448,7 @@
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/base:core_headers",
+ "//third_party/abseil-cpp/absl/cleanup",
"//third_party/abseil-cpp/absl/types:optional",
]
}
@@ -810,7 +807,6 @@
"../api/rtc_event_log",
"../api/task_queue",
"../api/task_queue:default_task_queue_factory",
- "../api/task_queue:to_queued_task",
"../api/test/video:function_video_factory",
"../api/units:data_rate",
"../api/units:frequency",
@@ -917,6 +913,7 @@
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
+ "//third_party/abseil-cpp/absl/functional:any_invocable",
"//third_party/abseil-cpp/absl/functional:bind_front",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
diff --git a/video/adaptation/BUILD.gn b/video/adaptation/BUILD.gn
index 82c18e6..b2f5f27 100644
--- a/video/adaptation/BUILD.gn
+++ b/video/adaptation/BUILD.gn
@@ -39,7 +39,6 @@
"../../api:sequence_checker",
"../../api/adaptation:resource_adaptation_api",
"../../api/task_queue:task_queue",
- "../../api/task_queue:to_queued_task",
"../../api/units:data_rate",
"../../api/units:time_delta",
"../../api/video:video_adaptation",
@@ -93,7 +92,6 @@
"../../api:field_trials_view",
"../../api:scoped_refptr",
"../../api/task_queue:task_queue",
- "../../api/task_queue:to_queued_task",
"../../api/units:time_delta",
"../../api/units:timestamp",
"../../api/video:encoded_image",
@@ -119,6 +117,9 @@
"../../test:test_support",
"../../test/time_controller:time_controller",
]
- absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
+ absl_deps = [
+ "//third_party/abseil-cpp/absl/functional:any_invocable",
+ "//third_party/abseil-cpp/absl/types:optional",
+ ]
}
}
diff --git a/video/adaptation/balanced_constraint.cc b/video/adaptation/balanced_constraint.cc
index 481259c..f9ee08a 100644
--- a/video/adaptation/balanced_constraint.cc
+++ b/video/adaptation/balanced_constraint.cc
@@ -14,7 +14,6 @@
#include <utility>
#include "api/sequence_checker.h"
-#include "api/task_queue/to_queued_task.h"
namespace webrtc {
diff --git a/video/adaptation/bandwidth_quality_scaler_resource.cc b/video/adaptation/bandwidth_quality_scaler_resource.cc
index b8d664c..485019f 100644
--- a/video/adaptation/bandwidth_quality_scaler_resource.cc
+++ b/video/adaptation/bandwidth_quality_scaler_resource.cc
@@ -12,7 +12,6 @@
#include <utility>
-#include "api/task_queue/to_queued_task.h"
#include "rtc_base/checks.h"
#include "rtc_base/experiments/balanced_degradation_settings.h"
#include "rtc_base/logging.h"
diff --git a/video/adaptation/pixel_limit_resource_unittest.cc b/video/adaptation/pixel_limit_resource_unittest.cc
index 28ee6af..dfd7a30 100644
--- a/video/adaptation/pixel_limit_resource_unittest.cc
+++ b/video/adaptation/pixel_limit_resource_unittest.cc
@@ -13,7 +13,7 @@
#include <memory>
#include <utility>
-#include "api/task_queue/to_queued_task.h"
+#include "absl/functional/any_invocable.h"
#include "api/units/timestamp.h"
#include "call/adaptation/test/fake_video_stream_input_state_provider.h"
#include "call/adaptation/test/mock_resource_listener.h"
@@ -46,7 +46,7 @@
input_state_provider_.SetInputState(current_pixels, 30, current_pixels);
}
- void RunTaskOnTaskQueue(std::unique_ptr<QueuedTask> task) {
+ void RunTaskOnTaskQueue(absl::AnyInvocable<void() &&> task) {
task_queue_->PostTask(std::move(task));
time_controller_.AdvanceTime(TimeDelta::Millis(0));
}
@@ -63,7 +63,7 @@
// Because our mock is strick, the test would fail if
// OnResourceUsageStateMeasured() is invoked.
testing::StrictMock<MockResourceListener> resource_listener;
- RunTaskOnTaskQueue(ToQueuedTask([&]() {
+ RunTaskOnTaskQueue([&]() {
rtc::scoped_refptr<PixelLimitResource> pixel_limit_resource =
PixelLimitResource::Create(task_queue_.get(), &input_state_provider_);
pixel_limit_resource->SetResourceListener(&resource_listener);
@@ -72,14 +72,14 @@
// Advance a significant amount of time.
time_controller_.AdvanceTime(kResourceUsageCheckIntervalMs * 10);
pixel_limit_resource->SetResourceListener(nullptr);
- }));
+ });
}
TEST_F(PixelLimitResourceTest,
OveruseIsReportedWhileCurrentPixelsIsGreaterThanMaxPixels) {
constexpr int kMaxPixels = 640 * 480;
testing::StrictMock<MockResourceListener> resource_listener;
- RunTaskOnTaskQueue(ToQueuedTask([&]() {
+ RunTaskOnTaskQueue([&]() {
rtc::scoped_refptr<PixelLimitResource> pixel_limit_resource =
PixelLimitResource::Create(task_queue_.get(), &input_state_provider_);
pixel_limit_resource->SetResourceListener(&resource_listener);
@@ -106,7 +106,7 @@
time_controller_.AdvanceTime(kResourceUsageCheckIntervalMs * 3);
pixel_limit_resource->SetResourceListener(nullptr);
- }));
+ });
}
TEST_F(PixelLimitResourceTest,
@@ -114,7 +114,7 @@
constexpr int kMaxPixels = 640 * 480;
const int kMinPixels = GetLowerResolutionThan(kMaxPixels);
testing::StrictMock<MockResourceListener> resource_listener;
- RunTaskOnTaskQueue(ToQueuedTask([&]() {
+ RunTaskOnTaskQueue([&]() {
rtc::scoped_refptr<PixelLimitResource> pixel_limit_resource =
PixelLimitResource::Create(task_queue_.get(), &input_state_provider_);
pixel_limit_resource->SetResourceListener(&resource_listener);
@@ -141,7 +141,7 @@
time_controller_.AdvanceTime(kResourceUsageCheckIntervalMs * 3);
pixel_limit_resource->SetResourceListener(nullptr);
- }));
+ });
}
} // namespace webrtc
diff --git a/video/adaptation/quality_scaler_resource.cc b/video/adaptation/quality_scaler_resource.cc
index 853c098..68d56fe 100644
--- a/video/adaptation/quality_scaler_resource.cc
+++ b/video/adaptation/quality_scaler_resource.cc
@@ -12,7 +12,6 @@
#include <utility>
-#include "api/task_queue/to_queued_task.h"
#include "rtc_base/checks.h"
#include "rtc_base/experiments/balanced_degradation_settings.h"
#include "rtc_base/time_utils.h"
diff --git a/video/call_stats2.cc b/video/call_stats2.cc
index f212397..95a4e99 100644
--- a/video/call_stats2.cc
+++ b/video/call_stats2.cc
@@ -15,7 +15,6 @@
#include <utility>
#include "absl/algorithm/container.h"
-#include "api/task_queue/to_queued_task.h"
#include "rtc_base/checks.h"
#include "rtc_base/location.h"
#include "system_wrappers/include/metrics.h"
@@ -147,7 +146,7 @@
if (task_queue_->IsCurrent()) {
update();
} else {
- task_queue_->PostTask(ToQueuedTask(task_safety_, std::move(update)));
+ task_queue_->PostTask(SafeTask(task_safety_.flag(), std::move(update)));
}
}
diff --git a/video/call_stats2_unittest.cc b/video/call_stats2_unittest.cc
index 13880d2..9d33bb3 100644
--- a/video/call_stats2_unittest.cc
+++ b/video/call_stats2_unittest.cc
@@ -13,7 +13,6 @@
#include <memory>
#include "api/task_queue/default_task_queue_factory.h"
-#include "api/task_queue/to_queued_task.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "rtc_base/thread.h"
#include "system_wrappers/include/metrics.h"
@@ -43,14 +42,13 @@
// Queues an rtt update call on the process thread.
void AsyncSimulateRttUpdate(int64_t rtt) {
RtcpRttStats* rtcp_rtt_stats = call_stats_.AsRtcpRttStats();
- task_queue_.PostTask(ToQueuedTask(
- [rtcp_rtt_stats, rtt] { rtcp_rtt_stats->OnRttUpdate(rtt); }));
+ task_queue_.PostTask(
+ [rtcp_rtt_stats, rtt] { rtcp_rtt_stats->OnRttUpdate(rtt); });
}
protected:
void FlushProcessAndWorker() {
- task_queue_.PostTask(
- ToQueuedTask([this] { loop_.PostTask([this]() { loop_.Quit(); }); }));
+ task_queue_.PostTask([this] { loop_.PostTask([this] { loop_.Quit(); }); });
loop_.Run();
}
diff --git a/video/end_to_end_tests/bandwidth_tests.cc b/video/end_to_end_tests/bandwidth_tests.cc
index 9d14e6a..c21b3ba 100644
--- a/video/end_to_end_tests/bandwidth_tests.cc
+++ b/video/end_to_end_tests/bandwidth_tests.cc
@@ -11,8 +11,8 @@
#include <memory>
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/test/simulated_network.h"
+#include "api/units/time_delta.h"
#include "api/video/builtin_video_bitrate_allocator_factory.h"
#include "api/video/video_bitrate_allocation.h"
#include "call/fake_network_pipe.h"
@@ -130,7 +130,7 @@
Action OnSendRtp(const uint8_t* packet, size_t length) override {
// Stats need to be fetched on the thread where the caller objects were
// constructed.
- task_queue_->PostTask(ToQueuedTask([this]() {
+ task_queue_->PostTask([this]() {
if (!sender_call_ || !receiver_call_) {
return;
}
@@ -146,7 +146,7 @@
observation_complete_.Set();
}
}
- }));
+ });
return SEND_PACKET;
}
@@ -248,7 +248,7 @@
void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
RTC_DCHECK(sender_call);
sender_call_ = sender_call;
- task_queue_->PostTask(ToQueuedTask([this]() { PollStats(); }));
+ task_queue_->PostTask([this]() { PollStats(); });
}
void PollStats() {
@@ -284,7 +284,8 @@
break;
}
- task_queue_->PostDelayedTask(ToQueuedTask([this] { PollStats(); }), 1000);
+ task_queue_->PostDelayedTask([this] { PollStats(); },
+ TimeDelta::Seconds(1));
}
void PerformTest() override {
diff --git a/video/end_to_end_tests/network_state_tests.cc b/video/end_to_end_tests/network_state_tests.cc
index c52f01d..3618673 100644
--- a/video/end_to_end_tests/network_state_tests.cc
+++ b/video/end_to_end_tests/network_state_tests.cc
@@ -14,7 +14,6 @@
#include "api/task_queue/default_task_queue_factory.h"
#include "api/task_queue/task_queue_base.h"
#include "api/task_queue/task_queue_factory.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/test/simulated_network.h"
#include "api/video_codecs/video_encoder.h"
#include "call/fake_network_pipe.h"
diff --git a/video/end_to_end_tests/retransmission_tests.cc b/video/end_to_end_tests/retransmission_tests.cc
index 25fd69c..b9ad569 100644
--- a/video/end_to_end_tests/retransmission_tests.cc
+++ b/video/end_to_end_tests/retransmission_tests.cc
@@ -14,6 +14,7 @@
#include "api/task_queue/task_queue_base.h"
#include "api/test/simulated_network.h"
#include "api/test/video/function_video_encoder_factory.h"
+#include "api/units/time_delta.h"
#include "call/fake_network_pipe.h"
#include "call/simulated_network.h"
#include "modules/rtp_rtcp/source/rtp_packet.h"
@@ -204,7 +205,7 @@
TEST_F(RetransmissionEndToEndTest,
StopSendingKeyframeRequestsForInactiveStream) {
- class KeyframeRequestObserver : public test::EndToEndTest, public QueuedTask {
+ class KeyframeRequestObserver : public test::EndToEndTest {
public:
explicit KeyframeRequestObserver(TaskQueueBase* task_queue)
: clock_(Clock::GetRealTimeClock()), task_queue_(task_queue) {}
@@ -221,7 +222,7 @@
test::RtcpPacketParser parser;
EXPECT_TRUE(parser.Parse(packet, length));
if (parser.pli()->num_packets() > 0)
- task_queue_->PostTask(std::unique_ptr<QueuedTask>(this));
+ task_queue_->PostTask([this] { Run(); });
return SEND_PACKET;
}
@@ -229,7 +230,7 @@
if (receive_stream_->GetStats().frames_decoded > 0) {
frame_decoded_ = true;
} else if (clock_->TimeInMilliseconds() - start_time_ < 5000) {
- task_queue_->PostDelayedTask(std::unique_ptr<QueuedTask>(this), 100);
+ task_queue_->PostDelayedTask([this] { Run(); }, TimeDelta::Millis(100));
return false;
}
return true;
@@ -237,11 +238,11 @@
void PerformTest() override {
start_time_ = clock_->TimeInMilliseconds();
- task_queue_->PostTask(std::unique_ptr<QueuedTask>(this));
+ task_queue_->PostTask([this] { Run(); });
test_done_.Wait(rtc::Event::kForever);
}
- bool Run() override {
+ void Run() {
if (!frame_decoded_) {
if (PollStats()) {
send_stream_->Stop();
@@ -259,7 +260,6 @@
receive_stream_->GetStats().rtcp_packet_type_counts.pli_packets);
test_done_.Set();
}
- return false;
}
private:
diff --git a/video/end_to_end_tests/stats_tests.cc b/video/end_to_end_tests/stats_tests.cc
index 99612a5..d1df83a 100644
--- a/video/end_to_end_tests/stats_tests.cc
+++ b/video/end_to_end_tests/stats_tests.cc
@@ -416,7 +416,7 @@
Action OnSendRtp(const uint8_t* packet, size_t length) override {
if (sent_rtp_ >= kNumRtpPacketsToSend) {
// Need to check the stats on the correct thread.
- task_queue_->PostTask(ToQueuedTask(task_safety_flag_, [this]() {
+ task_queue_->PostTask(SafeTask(task_safety_flag_, [this]() {
VideoReceiveStreamInterface::Stats stats =
receive_stream_->GetStats();
if (kNumRtpPacketsToSend == stats.rtp_stats.packet_counter.packets) {
@@ -601,7 +601,7 @@
}
}
task_queue_->PostTask(
- ToQueuedTask(task_safety_flag_, [this]() { VerifyStats(); }));
+ SafeTask(task_safety_flag_, [this]() { VerifyStats(); }));
return SEND_PACKET;
}
diff --git a/video/frame_buffer_proxy.cc b/video/frame_buffer_proxy.cc
index bc78be0..d427528 100644
--- a/video/frame_buffer_proxy.cc
+++ b/video/frame_buffer_proxy.cc
@@ -91,7 +91,7 @@
void StartNextDecode(bool keyframe_required) override {
if (!decode_queue_->IsCurrent()) {
- decode_queue_->PostTask(ToQueuedTask(
+ decode_queue_->PostTask(SafeTask(
decode_safety_,
[this, keyframe_required] { StartNextDecode(keyframe_required); }));
return;
@@ -272,8 +272,8 @@
void StartNextDecode(bool keyframe_required) override {
if (!worker_queue_->IsCurrent()) {
- worker_queue_->PostTask(ToQueuedTask(
- worker_safety_,
+ worker_queue_->PostTask(SafeTask(
+ worker_safety_.flag(),
[this, keyframe_required] { StartNextDecode(keyframe_required); }));
return;
}
@@ -361,8 +361,8 @@
decoder_ready_for_new_frame_ = false;
// VideoReceiveStream2 wants frames on the decoder thread.
- decode_queue_->PostTask(ToQueuedTask(
- decode_safety_, [this, frame = std::move(frame)]() mutable {
+ decode_queue_->PostTask(
+ SafeTask(decode_safety_, [this, frame = std::move(frame)]() mutable {
receiver_->OnEncodedFrame(std::move(frame));
}));
}
diff --git a/video/frame_cadence_adapter.cc b/video/frame_cadence_adapter.cc
index 486c26b..0ff1680 100644
--- a/video/frame_cadence_adapter.cc
+++ b/video/frame_cadence_adapter.cc
@@ -21,7 +21,6 @@
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "api/video/video_frame.h"
@@ -378,12 +377,12 @@
current_frame_id_++;
scheduled_repeat_ = absl::nullopt;
queue_->PostDelayedHighPrecisionTask(
- ToQueuedTask(safety_,
- [this] {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- ProcessOnDelayedCadence();
- }),
- frame_delay_.ms());
+ SafeTask(safety_.flag(),
+ [this] {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ ProcessOnDelayedCadence();
+ }),
+ frame_delay_);
}
void ZeroHertzAdapterMode::OnDiscardedFrame() {
@@ -500,12 +499,12 @@
TimeDelta repeat_delay = RepeatDuration(idle_repeat);
queue_->PostDelayedHighPrecisionTask(
- ToQueuedTask(safety_,
- [this, frame_id] {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- ProcessRepeatedFrameOnDelayedCadence(frame_id);
- }),
- repeat_delay.ms());
+ SafeTask(safety_.flag(),
+ [this, frame_id] {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ ProcessRepeatedFrameOnDelayedCadence(frame_id);
+ }),
+ repeat_delay);
}
// RTC_RUN_ON(&sequence_checker_)
@@ -654,7 +653,7 @@
// Local time in webrtc time base.
Timestamp post_time = clock_->CurrentTime();
frames_scheduled_for_processing_.fetch_add(1, std::memory_order_relaxed);
- queue_->PostTask(ToQueuedTask(safety_.flag(), [this, post_time, frame] {
+ queue_->PostTask(SafeTask(safety_.flag(), [this, post_time, frame] {
RTC_DCHECK_RUN_ON(queue_);
if (zero_hertz_adapter_created_timestamp_.has_value()) {
TimeDelta time_until_first_frame =
@@ -676,7 +675,7 @@
void FrameCadenceAdapterImpl::OnDiscardedFrame() {
callback_->OnDiscardedFrame();
- queue_->PostTask(ToQueuedTask(safety_.flag(), [this] {
+ queue_->PostTask(SafeTask(safety_.flag(), [this] {
RTC_DCHECK_RUN_ON(queue_);
if (zero_hertz_adapter_) {
zero_hertz_adapter_->OnDiscardedFrame();
@@ -689,7 +688,7 @@
RTC_LOG(LS_INFO) << __func__ << " this " << this << " min_fps "
<< constraints.min_fps.value_or(-1) << " max_fps "
<< constraints.max_fps.value_or(-1);
- queue_->PostTask(ToQueuedTask(safety_.flag(), [this, constraints] {
+ queue_->PostTask(SafeTask(safety_.flag(), [this, constraints] {
RTC_DCHECK_RUN_ON(queue_);
bool was_zero_hertz_enabled = IsZeroHertzScreenshareEnabled();
source_constraints_ = constraints;
diff --git a/video/frame_cadence_adapter_unittest.cc b/video/frame_cadence_adapter_unittest.cc
index 6d57f30..dce3b08 100644
--- a/video/frame_cadence_adapter_unittest.cc
+++ b/video/frame_cadence_adapter_unittest.cc
@@ -13,10 +13,11 @@
#include <utility>
#include <vector>
+#include "absl/functional/any_invocable.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/task_queue/task_queue_base.h"
#include "api/task_queue/task_queue_factory.h"
-#include "api/task_queue/to_queued_task.h"
+#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "api/video/nv12_buffer.h"
#include "api/video/video_frame.h"
@@ -643,10 +644,8 @@
}
}
- void ScheduleDelayed(TimeDelta delay, std::function<void()> function) {
- TaskQueueBase::Current()->PostDelayedTask(
- ToQueuedTask([function = std::move(function)] { function(); }),
- delay.ms());
+ void ScheduleDelayed(TimeDelta delay, absl::AnyInvocable<void() &&> task) {
+ TaskQueueBase::Current()->PostDelayedTask(std::move(task), delay);
}
protected:
@@ -1042,7 +1041,7 @@
int64_t original_ntp_time_ms;
int64_t original_timestamp_us;
rtc::Event event;
- queue->PostTask(ToQueuedTask([&] {
+ queue->PostTask([&] {
adapter = CreateAdapter(enabler, clock);
adapter->Initialize(&callback);
adapter->SetZeroHertzModeEnabled(
@@ -1070,13 +1069,13 @@
}
}));
adapter->OnFrame(frame);
- }));
+ });
event.Wait(rtc::Event::kForever);
rtc::Event finalized;
- queue->PostTask(ToQueuedTask([&] {
+ queue->PostTask([&] {
adapter = nullptr;
finalized.Set();
- }));
+ });
finalized.Wait(rtc::Event::kForever);
}
diff --git a/video/receive_statistics_proxy2.cc b/video/receive_statistics_proxy2.cc
index 66dfe9c..5f1f635 100644
--- a/video/receive_statistics_proxy2.cc
+++ b/video/receive_statistics_proxy2.cc
@@ -14,7 +14,6 @@
#include <cmath>
#include <utility>
-#include "api/task_queue/to_queued_task.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
@@ -642,7 +641,7 @@
void ReceiveStatisticsProxy::OnIncomingPayloadType(int payload_type) {
RTC_DCHECK_RUN_ON(&decode_queue_);
- worker_thread_->PostTask(ToQueuedTask(task_safety_, [payload_type, this]() {
+ worker_thread_->PostTask(SafeTask(task_safety_.flag(), [payload_type, this] {
RTC_DCHECK_RUN_ON(&main_thread_);
stats_.current_payload_type = payload_type;
}));
@@ -651,8 +650,8 @@
void ReceiveStatisticsProxy::OnDecoderImplementationName(
const char* implementation_name) {
RTC_DCHECK_RUN_ON(&decode_queue_);
- worker_thread_->PostTask(ToQueuedTask(
- task_safety_, [name = std::string(implementation_name), this]() {
+ worker_thread_->PostTask(SafeTask(
+ task_safety_.flag(), [name = std::string(implementation_name), this]() {
RTC_DCHECK_RUN_ON(&main_thread_);
stats_.decoder_implementation_name = name;
}));
@@ -668,8 +667,8 @@
// Only called on main_thread_ with FrameBuffer3
if (!worker_thread_->IsCurrent()) {
RTC_DCHECK_RUN_ON(&decode_queue_);
- worker_thread_->PostTask(ToQueuedTask(
- task_safety_,
+ worker_thread_->PostTask(SafeTask(
+ task_safety_.flag(),
[max_decode_ms, current_delay_ms, target_delay_ms, jitter_buffer_ms,
min_playout_delay_ms, render_delay_ms, this]() {
OnFrameBufferTimingsUpdated(max_decode_ms, current_delay_ms,
@@ -704,8 +703,9 @@
// Only called on main_thread_ with FrameBuffer3
if (!worker_thread_->IsCurrent()) {
RTC_DCHECK_RUN_ON(&decode_queue_);
- worker_thread_->PostTask(ToQueuedTask(
- task_safety_, [info, this]() { OnTimingFrameInfoUpdated(info); }));
+ worker_thread_->PostTask(SafeTask(task_safety_.flag(), [info, this]() {
+ OnTimingFrameInfoUpdated(info);
+ }));
return;
}
RTC_DCHECK_RUN_ON(&main_thread_);
@@ -745,7 +745,7 @@
// runs after the `ReceiveStatisticsProxy` has been deleted. In such a
// case the packet_counter update won't be recorded.
worker_thread_->PostTask(
- ToQueuedTask(task_safety_, [ssrc, packet_counter, this]() {
+ SafeTask(task_safety_.flag(), [ssrc, packet_counter, this]() {
RtcpPacketTypesCounterUpdated(ssrc, packet_counter);
}));
return;
@@ -792,8 +792,8 @@
// "com.apple.coremedia.decompressionsession.clientcallback"
VideoFrameMetaData meta(frame, current_time);
worker_thread_->PostTask(
- ToQueuedTask(task_safety_, [meta, qp, decode_time, processing_delay,
- assembly_time, content_type, this]() {
+ SafeTask(task_safety_.flag(), [meta, qp, decode_time, processing_delay,
+ assembly_time, content_type, this]() {
OnDecodedFrame(meta, qp, decode_time, processing_delay, assembly_time,
content_type);
}));
@@ -973,22 +973,24 @@
void ReceiveStatisticsProxy::OnDroppedFrames(uint32_t frames_dropped) {
// Can be called on either the decode queue or the worker thread
// See FrameBuffer2 for more details.
- worker_thread_->PostTask(ToQueuedTask(task_safety_, [frames_dropped, this]() {
- RTC_DCHECK_RUN_ON(&main_thread_);
- stats_.frames_dropped += frames_dropped;
- }));
+ worker_thread_->PostTask(
+ SafeTask(task_safety_.flag(), [frames_dropped, this]() {
+ RTC_DCHECK_RUN_ON(&main_thread_);
+ stats_.frames_dropped += frames_dropped;
+ }));
}
void ReceiveStatisticsProxy::OnPreDecode(VideoCodecType codec_type, int qp) {
RTC_DCHECK_RUN_ON(&decode_queue_);
- worker_thread_->PostTask(ToQueuedTask(task_safety_, [codec_type, qp, this]() {
- RTC_DCHECK_RUN_ON(&main_thread_);
- last_codec_type_ = codec_type;
- if (last_codec_type_ == kVideoCodecVP8 && qp != -1) {
- qp_counters_.vp8.Add(qp);
- qp_sample_.Add(qp);
- }
- }));
+ worker_thread_->PostTask(
+ SafeTask(task_safety_.flag(), [codec_type, qp, this]() {
+ RTC_DCHECK_RUN_ON(&main_thread_);
+ last_codec_type_ = codec_type;
+ if (last_codec_type_ == kVideoCodecVP8 && qp != -1) {
+ qp_counters_.vp8.Add(qp);
+ qp_sample_.Add(qp);
+ }
+ }));
}
void ReceiveStatisticsProxy::OnStreamInactive() {
diff --git a/video/receive_statistics_proxy2_unittest.cc b/video/receive_statistics_proxy2_unittest.cc
index fe468f6..fa6c096 100644
--- a/video/receive_statistics_proxy2_unittest.cc
+++ b/video/receive_statistics_proxy2_unittest.cc
@@ -18,7 +18,6 @@
#include "absl/types/optional.h"
#include "api/scoped_refptr.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/video/i420_buffer.h"
#include "api/video/video_frame.h"
#include "api/video/video_frame_buffer.h"
diff --git a/video/rtp_video_stream_receiver_frame_transformer_delegate.cc b/video/rtp_video_stream_receiver_frame_transformer_delegate.cc
index e6601d0..e6f3326 100644
--- a/video/rtp_video_stream_receiver_frame_transformer_delegate.cc
+++ b/video/rtp_video_stream_receiver_frame_transformer_delegate.cc
@@ -14,7 +14,6 @@
#include <vector>
#include "absl/memory/memory.h"
-#include "api/task_queue/to_queued_task.h"
#include "modules/rtp_rtcp/source/rtp_descriptor_authentication.h"
#include "rtc_base/thread.h"
@@ -104,10 +103,10 @@
std::unique_ptr<TransformableFrameInterface> frame) {
rtc::scoped_refptr<RtpVideoStreamReceiverFrameTransformerDelegate> delegate(
this);
- network_thread_->PostTask(ToQueuedTask(
+ network_thread_->PostTask(
[delegate = std::move(delegate), frame = std::move(frame)]() mutable {
delegate->ManageFrame(std::move(frame));
- }));
+ });
}
void RtpVideoStreamReceiverFrameTransformerDelegate::ManageFrame(
diff --git a/video/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc b/video/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
index 20a5953..e757fa2 100644
--- a/video/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
+++ b/video/rtp_video_stream_receiver_frame_transformer_delegate_unittest.cc
@@ -17,7 +17,6 @@
#include "absl/memory/memory.h"
#include "api/call/transport.h"
-#include "api/task_queue/to_queued_task.h"
#include "call/video_receive_stream.h"
#include "modules/rtp_rtcp/source/rtp_descriptor_authentication.h"
#include "rtc_base/event.h"
diff --git a/video/task_queue_frame_decode_scheduler.cc b/video/task_queue_frame_decode_scheduler.cc
index 594f8b8..fbbed1b 100644
--- a/video/task_queue_frame_decode_scheduler.cc
+++ b/video/task_queue_frame_decode_scheduler.cc
@@ -14,7 +14,6 @@
#include <utility>
#include "api/sequence_checker.h"
-#include "api/task_queue/to_queued_task.h"
#include "rtc_base/checks.h"
namespace webrtc {
@@ -46,17 +45,17 @@
TimeDelta wait = std::max(
TimeDelta::Zero(), schedule.latest_decode_time - clock_->CurrentTime());
bookkeeping_queue_->PostDelayedTask(
- ToQueuedTask(task_safety_.flag(),
- [this, rtp, schedule, cb = std::move(cb)] {
- RTC_DCHECK_RUN_ON(bookkeeping_queue_);
- // If the next frame rtp has changed since this task was
- // this scheduled release should be skipped.
- if (scheduled_rtp_ != rtp)
- return;
- scheduled_rtp_ = absl::nullopt;
- cb(rtp, schedule.render_time);
- }),
- wait.ms());
+ SafeTask(task_safety_.flag(),
+ [this, rtp, schedule, cb = std::move(cb)] {
+ RTC_DCHECK_RUN_ON(bookkeeping_queue_);
+ // If the next frame rtp has changed since this task was
+ // this scheduled release should be skipped.
+ if (scheduled_rtp_ != rtp)
+ return;
+ scheduled_rtp_ = absl::nullopt;
+ cb(rtp, schedule.render_time);
+ }),
+ wait);
}
void TaskQueueFrameDecodeScheduler::CancelOutstanding() {
diff --git a/video/task_queue_frame_decode_scheduler_unittest.cc b/video/task_queue_frame_decode_scheduler_unittest.cc
index 2807e65..d970cc8 100644
--- a/video/task_queue_frame_decode_scheduler_unittest.cc
+++ b/video/task_queue_frame_decode_scheduler_unittest.cc
@@ -15,6 +15,7 @@
#include <memory>
#include <utility>
+#include "absl/functional/any_invocable.h"
#include "absl/functional/bind_front.h"
#include "absl/types/optional.h"
#include "api/units/time_delta.h"
@@ -55,9 +56,8 @@
}
protected:
- template <class Task>
- void OnQueue(Task&& t) {
- task_queue_.PostTask(std::forward<Task>(t));
+ void OnQueue(absl::AnyInvocable<void() &&> t) {
+ task_queue_.PostTask(std::move(t));
time_controller_.AdvanceTime(TimeDelta::Zero());
}
diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc
index bee1534..d3e8821 100644
--- a/video/video_receive_stream2.cc
+++ b/video/video_receive_stream2.cc
@@ -29,7 +29,6 @@
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/units/frequency.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
@@ -609,7 +608,7 @@
// `video_frame.packet_infos`. But VideoFrame is const qualified here.
call_->worker_thread()->PostTask(
- ToQueuedTask(task_safety_, [frame_meta, this]() {
+ SafeTask(task_safety_.flag(), [frame_meta, this]() {
RTC_DCHECK_RUN_ON(&worker_sequence_checker_);
int64_t video_playout_ntp_ms;
int64_t sync_offset_ms;
@@ -771,9 +770,9 @@
void VideoReceiveStream2::OnDecodableFrameTimeout(TimeDelta wait_time) {
if (!call_->worker_thread()->IsCurrent()) {
- call_->worker_thread()->PostTask(ToQueuedTask(
- task_safety_,
- [this, wait_time] { OnDecodableFrameTimeout(wait_time); }));
+ call_->worker_thread()->PostTask(
+ SafeTask(task_safety_.flag(),
+ [this, wait_time] { OnDecodableFrameTimeout(wait_time); }));
return;
}
@@ -841,8 +840,8 @@
{
// TODO(bugs.webrtc.org/11993): Make this PostTask to the network thread.
- call_->worker_thread()->PostTask(ToQueuedTask(
- task_safety_,
+ call_->worker_thread()->PostTask(SafeTask(
+ task_safety_.flag(),
[this, now, received_frame_is_keyframe, force_request_key_frame,
decoded_frame_picture_id, keyframe_request_is_due]() {
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc
index 1b60844..5320336 100644
--- a/video/video_send_stream.cc
+++ b/video/video_send_stream.cc
@@ -13,7 +13,6 @@
#include "api/array_view.h"
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/video/video_stream_encoder_settings.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_header_extension_size.h"
@@ -238,7 +237,7 @@
<< active_layers_string.str();
rtp_transport_queue_->PostTask(
- ToQueuedTask(transport_queue_safety_, [this, active_layers] {
+ SafeTask(transport_queue_safety_, [this, active_layers] {
send_stream_.UpdateActiveSimulcastLayers(active_layers);
}));
@@ -253,11 +252,11 @@
running_ = true;
- rtp_transport_queue_->PostTask(ToQueuedTask([this] {
+ rtp_transport_queue_->PostTask([this] {
transport_queue_safety_->SetAlive();
send_stream_.Start();
thread_sync_event_.Set();
- }));
+ });
// It is expected that after VideoSendStream::Start has been called, incoming
// frames are not dropped in VideoStreamEncoder. To ensure this, Start has to
@@ -272,7 +271,7 @@
return;
RTC_DLOG(LS_INFO) << "VideoSendStream::Stop";
running_ = false;
- rtp_transport_queue_->PostTask(ToQueuedTask(transport_queue_safety_, [this] {
+ rtp_transport_queue_->PostTask(SafeTask(transport_queue_safety_, [this] {
// As the stream can get re-used and implicitly restarted via changing
// the state of the active layers, we do not mark the
// `transport_queue_safety_` flag with `SetNotAlive()` here. That's only
diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index 83fa9e1..6a406a4 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -21,7 +21,6 @@
#include "api/rtp_parameters.h"
#include "api/scoped_refptr.h"
#include "api/sequence_checker.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/video_codecs/video_codec.h"
#include "call/rtp_transport_controller_send_interface.h"
#include "call/video_send_stream.h"
@@ -284,7 +283,7 @@
transport->EnablePeriodicAlrProbing(*enable_alr_bw_probing);
}
- rtp_transport_queue_->PostTask(ToQueuedTask(transport_queue_safety_, [this] {
+ rtp_transport_queue_->PostTask(SafeTask(transport_queue_safety_, [this] {
if (configured_pacing_factor_)
transport_->SetPacingFactor(*configured_pacing_factor_);
@@ -398,7 +397,7 @@
void VideoSendStreamImpl::OnBitrateAllocationUpdated(
const VideoBitrateAllocation& allocation) {
if (!rtp_transport_queue_->IsCurrent()) {
- rtp_transport_queue_->PostTask(ToQueuedTask(transport_queue_safety_, [=] {
+ rtp_transport_queue_->PostTask(SafeTask(transport_queue_safety_, [=] {
OnBitrateAllocationUpdated(allocation);
}));
return;
@@ -472,7 +471,7 @@
VideoEncoderConfig::ContentType content_type,
int min_transmit_bitrate_bps) {
if (!rtp_transport_queue_->IsCurrent()) {
- rtp_transport_queue_->PostTask(ToQueuedTask(
+ rtp_transport_queue_->PostTask(SafeTask(
transport_queue_safety_,
[this, streams = std::move(streams), is_svc, content_type,
min_transmit_bitrate_bps]() mutable {
@@ -555,7 +554,7 @@
};
if (!rtp_transport_queue_->IsCurrent()) {
rtp_transport_queue_->PostTask(
- ToQueuedTask(transport_queue_safety_, std::move(enable_padding_task)));
+ SafeTask(transport_queue_safety_, std::move(enable_padding_task)));
} else {
enable_padding_task();
}
@@ -574,7 +573,7 @@
};
if (!rtp_transport_queue_->IsCurrent()) {
rtp_transport_queue_->PostTask(
- ToQueuedTask(transport_queue_safety_, std::move(update_task)));
+ SafeTask(transport_queue_safety_, std::move(update_task)));
} else {
update_task();
}
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 4e4eba9..b005a63 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -16,6 +16,7 @@
#include "absl/types/optional.h"
#include "api/rtc_event_log/rtc_event_log.h"
+#include "api/units/time_delta.h"
#include "call/rtp_video_sender.h"
#include "call/test/mock_bitrate_allocator.h"
#include "call/test/mock_rtp_transport_controller_send.h"
@@ -866,15 +867,15 @@
RTC_FROM_HERE);
rtc::Event done;
- test_queue_.PostDelayedTask(
- ToQueuedTask([&] {
+ test_queue_.Get()->PostDelayedTask(
+ [&] {
// No padding supposed to be sent for paused observer
EXPECT_EQ(0, padding_bitrate);
testing::Mock::VerifyAndClearExpectations(&bitrate_allocator_);
vss_impl->Stop();
done.Set();
- }),
- 5000);
+ },
+ TimeDelta::Seconds(5));
// Pause the test suite so that the last delayed task executes.
ASSERT_TRUE(done.Wait(10000));
@@ -904,13 +905,13 @@
RTC_FROM_HERE);
rtc::Event done;
- test_queue_.PostDelayedTask(
- ToQueuedTask([&] {
+ test_queue_.Get()->PostDelayedTask(
+ [&] {
testing::Mock::VerifyAndClearExpectations(&bitrate_allocator_);
vss_impl->Stop();
done.Set();
- }),
- 2000);
+ },
+ TimeDelta::Seconds(2));
ASSERT_TRUE(done.Wait(5000));
}
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index 0cb5339..23b26cd 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -16,7 +16,6 @@
#include "api/sequence_checker.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/test/simulated_network.h"
#include "api/video/builtin_video_bitrate_allocator_factory.h"
#include "api/video/encoded_image.h"
@@ -1503,7 +1502,7 @@
const uint32_t ssrc = rtp_packet.Ssrc();
RTC_DCHECK(stream_);
- task_queue_->PostTask(ToQueuedTask(task_safety_flag_, [this, ssrc]() {
+ task_queue_->PostTask(SafeTask(task_safety_flag_, [this, ssrc]() {
VideoSendStream::Stats stats = stream_->GetStats();
if (!stats.substreams.empty()) {
EXPECT_EQ(1u, stats.substreams.size());
@@ -1620,14 +1619,14 @@
Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTC_DCHECK_RUN_ON(&module_process_thread_);
- task_queue_->PostTask(ToQueuedTask([this]() {
+ task_queue_->PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_thread_);
if (!call_)
return;
Call::Stats stats = call_->GetStats();
if (stats.send_bandwidth_bps > kStartBitrateBps)
observation_complete_.Set();
- }));
+ });
return SEND_PACKET;
}
@@ -1722,7 +1721,7 @@
Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTC_DCHECK_RUN_ON(&module_process_thread_);
- task_queue_->PostTask(ToQueuedTask([this]() {
+ task_queue_->PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_thread_);
if (!call_)
return;
@@ -1732,7 +1731,7 @@
call_->GetStats().send_bandwidth_bps > kRelayBandwidthCapBps;
if (did_exceed_cap || had_time_to_exceed_cap_in_relayed_phase)
observation_complete_.Set();
- }));
+ });
return SEND_PACKET;
}
@@ -1918,7 +1917,7 @@
// Check the stats on the correct thread and signal the 'complete' flag
// once we detect that we're done.
- task_queue_->PostTask(ToQueuedTask([this]() {
+ task_queue_->PostTask([this]() {
RTC_DCHECK_RUN_ON(&task_queue_thread_);
// In case we get a callback during teardown.
// When this happens, OnStreamsStopped() has been called already,
@@ -1953,7 +1952,7 @@
observation_complete_.Set();
}
}
- }));
+ });
return SEND_PACKET;
}
@@ -3865,7 +3864,7 @@
}
Action OnSendRtp(const uint8_t* packet, size_t length) override {
- task_queue_->PostTask(ToQueuedTask([this]() {
+ task_queue_->PostTask([this]() {
MutexLock lock(&mutex_);
if (done_)
return;
@@ -3914,7 +3913,7 @@
return;
}
observation_complete_.Set();
- }));
+ });
return SEND_PACKET;
}
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index d77cbe4..827ef7b 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -18,12 +18,12 @@
#include <utility>
#include "absl/algorithm/container.h"
+#include "absl/cleanup/cleanup.h"
#include "absl/types/optional.h"
#include "api/field_trials_view.h"
#include "api/sequence_checker.h"
#include "api/task_queue/queued_task.h"
#include "api/task_queue/task_queue_base.h"
-#include "api/task_queue/to_queued_task.h"
#include "api/video/encoded_image.h"
#include "api/video/i420_buffer.h"
#include "api/video/render_resolution.h"
@@ -738,9 +738,9 @@
video_source_sink_controller_.SetSource(nullptr);
rtc::Event shutdown_event;
-
- encoder_queue_.PostTask(webrtc::ToQueuedTask(
- [this] {
+ absl::Cleanup shutdown = [&shutdown_event] { shutdown_event.Set(); };
+ encoder_queue_.PostTask(
+ [this, shutdown = std::move(shutdown)] {
RTC_DCHECK_RUN_ON(&encoder_queue_);
if (resource_adaptation_processor_) {
stream_resource_manager_.StopManagedResources();
@@ -763,8 +763,7 @@
ReleaseEncoder();
encoder_ = nullptr;
frame_cadence_adapter_ = nullptr;
- },
- [&shutdown_event]() { shutdown_event.Set(); }));
+ });
shutdown_event.Wait(rtc::Event::kForever);
}
@@ -1148,9 +1147,10 @@
encoder_resolutions.emplace_back(simulcastStream.width,
simulcastStream.height);
}
- worker_queue_->PostTask(ToQueuedTask(
- task_safety_, [this, max_framerate, alignment,
- encoder_resolutions = std::move(encoder_resolutions)]() {
+ worker_queue_->PostTask(SafeTask(
+ task_safety_.flag(),
+ [this, max_framerate, alignment,
+ encoder_resolutions = std::move(encoder_resolutions)]() {
RTC_DCHECK_RUN_ON(worker_queue_);
if (max_framerate !=
video_source_sink_controller_.frame_rate_upper_limit() ||
@@ -1910,7 +1910,7 @@
}
void VideoStreamEncoder::RequestRefreshFrame() {
- worker_queue_->PostTask(ToQueuedTask(task_safety_, [this] {
+ worker_queue_->PostTask(SafeTask(task_safety_.flag(), [this] {
RTC_DCHECK_RUN_ON(worker_queue_);
video_source_sink_controller_.RequestRefreshFrame();
}));
@@ -2249,8 +2249,8 @@
RTC_LOG(LS_INFO) << "Updating sink restrictions from "
<< (reason ? reason->Name() : std::string("<null>"))
<< " to " << restrictions.ToString();
- worker_queue_->PostTask(ToQueuedTask(
- task_safety_, [this, restrictions = std::move(restrictions)]() {
+ worker_queue_->PostTask(SafeTask(
+ task_safety_.flag(), [this, restrictions = std::move(restrictions)]() {
RTC_DCHECK_RUN_ON(worker_queue_);
video_source_sink_controller_.SetRestrictions(std::move(restrictions));
video_source_sink_controller_.PushSourceSinkSettings();
@@ -2391,7 +2391,7 @@
"animation detection.";
}
worker_queue_->PostTask(
- ToQueuedTask(task_safety_, [this, should_cap_resolution]() {
+ SafeTask(task_safety_.flag(), [this, should_cap_resolution]() {
RTC_DCHECK_RUN_ON(worker_queue_);
video_source_sink_controller_.SetPixelsPerFrameUpperLimit(
should_cap_resolution
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index 575a8e2..91c528c 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -133,11 +133,10 @@
TaskQueueBase* encoder_queue,
FrameCadenceAdapterInterface::Callback* video_stream_encoder_callback,
int64_t ntp_time_ms) {
- encoder_queue->PostTask(
- ToQueuedTask([video_stream_encoder_callback, ntp_time_ms] {
- video_stream_encoder_callback->OnFrame(Timestamp::Millis(ntp_time_ms),
- 1, CreateSimpleNV12Frame());
- }));
+ encoder_queue->PostTask([video_stream_encoder_callback, ntp_time_ms] {
+ video_stream_encoder_callback->OnFrame(Timestamp::Millis(ntp_time_ms), 1,
+ CreateSimpleNV12Frame());
+ });
}
class TestBuffer : public webrtc::I420Buffer {
@@ -9076,13 +9075,17 @@
private:
void Delete() override { delete this; }
- void PostTask(std::unique_ptr<QueuedTask> task) override {
+ void PostTask(absl::AnyInvocable<void() &&> task) override {
// meh.
}
- void PostDelayedTask(std::unique_ptr<QueuedTask> task,
- uint32_t milliseconds) override {
+ void PostDelayedTask(absl::AnyInvocable<void() &&> task,
+ TimeDelta delay) override {
ASSERT_TRUE(false);
}
+ void PostDelayedHighPrecisionTask(absl::AnyInvocable<void() &&> task,
+ TimeDelta delay) override {
+ ADD_FAILURE();
+ }
};
// Lots of boiler plate.