diff --git a/call/call.cc b/call/call.cc index 337581d2e4..908a917da4 100644 --- a/call/call.cc +++ b/call/call.cc @@ -292,6 +292,9 @@ class Call final : public webrtc::Call, const WebRtcKeyValueConfig& trials() const override; + TaskQueueBase* network_thread() const override; + TaskQueueBase* worker_thread() const override; + // Implements PacketReceiver. DeliveryStatus DeliverPacket(MediaType media_type, rtc::CopyOnWriteBuffer packet, @@ -1164,6 +1167,14 @@ const WebRtcKeyValueConfig& Call::trials() const { return *config_.trials; } +TaskQueueBase* Call::network_thread() const { + return network_thread_; +} + +TaskQueueBase* Call::worker_thread() const { + return worker_thread_; +} + void Call::SignalChannelNetworkState(MediaType media, NetworkState state) { RTC_DCHECK_RUN_ON(network_thread_); RTC_DCHECK(media == MediaType::AUDIO || media == MediaType::VIDEO); diff --git a/call/call.h b/call/call.h index a2b3b89598..37d784f726 100644 --- a/call/call.h +++ b/call/call.h @@ -17,6 +17,7 @@ #include "api/adaptation/resource.h" #include "api/media_types.h" +#include "api/task_queue/task_queue_base.h" #include "call/audio_receive_stream.h" #include "call/audio_send_stream.h" #include "call/call_config.h" @@ -158,6 +159,9 @@ class Call { virtual const WebRtcKeyValueConfig& trials() const = 0; + virtual TaskQueueBase* network_thread() const = 0; + virtual TaskQueueBase* worker_thread() const = 0; + virtual ~Call() {} }; diff --git a/call/degraded_call.cc b/call/degraded_call.cc index 0cd43018ac..73c236bc0c 100644 --- a/call/degraded_call.cc +++ b/call/degraded_call.cc @@ -270,6 +270,14 @@ const WebRtcKeyValueConfig& DegradedCall::trials() const { return call_->trials(); } +TaskQueueBase* DegradedCall::network_thread() const { + return call_->network_thread(); +} + +TaskQueueBase* DegradedCall::worker_thread() const { + return call_->worker_thread(); +} + void DegradedCall::SignalChannelNetworkState(MediaType media, NetworkState state) { call_->SignalChannelNetworkState(media, state); diff --git a/call/degraded_call.h b/call/degraded_call.h index d81c65c570..03fc14f284 100644 --- a/call/degraded_call.h +++ b/call/degraded_call.h @@ -87,6 +87,9 @@ class DegradedCall : public Call, private PacketReceiver { const WebRtcKeyValueConfig& trials() const override; + TaskQueueBase* network_thread() const override; + TaskQueueBase* worker_thread() const override; + void SignalChannelNetworkState(MediaType media, NetworkState state) override; void OnAudioTransportOverheadChanged( int transport_overhead_per_packet) override; diff --git a/media/engine/fake_webrtc_call.cc b/media/engine/fake_webrtc_call.cc index 0d97162ad5..76a70aaa57 100644 --- a/media/engine/fake_webrtc_call.cc +++ b/media/engine/fake_webrtc_call.cc @@ -17,6 +17,7 @@ #include "media/base/rtp_utils.h" #include "rtc_base/checks.h" #include "rtc_base/gunit.h" +#include "rtc_base/thread.h" namespace cricket { FakeAudioSendStream::FakeAudioSendStream( @@ -377,7 +378,13 @@ void FakeFlexfecReceiveStream::OnRtpPacket(const webrtc::RtpPacketReceived&) { } FakeCall::FakeCall() - : audio_network_state_(webrtc::kNetworkUp), + : FakeCall(rtc::Thread::Current(), rtc::Thread::Current()) {} + +FakeCall::FakeCall(webrtc::TaskQueueBase* worker_thread, + webrtc::TaskQueueBase* network_thread) + : network_thread_(network_thread), + worker_thread_(worker_thread), + audio_network_state_(webrtc::kNetworkUp), video_network_state_(webrtc::kNetworkUp), num_created_send_streams_(0), num_created_receive_streams_(0) {} @@ -612,6 +619,14 @@ webrtc::Call::Stats FakeCall::GetStats() const { return stats_; } +webrtc::TaskQueueBase* FakeCall::network_thread() const { + return network_thread_; +} + +webrtc::TaskQueueBase* FakeCall::worker_thread() const { + return worker_thread_; +} + void FakeCall::SignalChannelNetworkState(webrtc::MediaType media, webrtc::NetworkState state) { switch (media) { diff --git a/media/engine/fake_webrtc_call.h b/media/engine/fake_webrtc_call.h index 1326a0736f..fd383dadd1 100644 --- a/media/engine/fake_webrtc_call.h +++ b/media/engine/fake_webrtc_call.h @@ -282,6 +282,8 @@ class FakeFlexfecReceiveStream final : public webrtc::FlexfecReceiveStream { class FakeCall final : public webrtc::Call, public webrtc::PacketReceiver { public: FakeCall(); + FakeCall(webrtc::TaskQueueBase* worker_thread, + webrtc::TaskQueueBase* network_thread); ~FakeCall() override; webrtc::MockRtpTransportControllerSend* GetMockTransportControllerSend() { @@ -364,12 +366,18 @@ class FakeCall final : public webrtc::Call, public webrtc::PacketReceiver { return trials_; } + webrtc::TaskQueueBase* network_thread() const override; + webrtc::TaskQueueBase* worker_thread() const override; + void SignalChannelNetworkState(webrtc::MediaType media, webrtc::NetworkState state) override; void OnAudioTransportOverheadChanged( int transport_overhead_per_packet) override; void OnSentPacket(const rtc::SentPacket& sent_packet) override; + webrtc::TaskQueueBase* const network_thread_; + webrtc::TaskQueueBase* const worker_thread_; + ::testing::NiceMock transport_controller_send_; diff --git a/pc/channel_manager_unittest.cc b/pc/channel_manager_unittest.cc index 20a64993ab..88de1f6a48 100644 --- a/pc/channel_manager_unittest.cc +++ b/pc/channel_manager_unittest.cc @@ -61,7 +61,7 @@ class ChannelManagerTest : public ::testing::Test { false, worker_, network_.get())), - fake_call_() { + fake_call_(worker_, network_.get()) { network_->SetName("Network", this); network_->Start(); } diff --git a/pc/rtp_sender_receiver_unittest.cc b/pc/rtp_sender_receiver_unittest.cc index b0df8fc997..625f29b34b 100644 --- a/pc/rtp_sender_receiver_unittest.cc +++ b/pc/rtp_sender_receiver_unittest.cc @@ -107,7 +107,7 @@ class RtpSenderReceiverTest // Create fake media engine/etc. so we can create channels to use to // test RtpSenders/RtpReceivers. media_engine_(new cricket::FakeMediaEngine()), - fake_call_(), + fake_call_(worker_thread_, network_thread_), local_stream_(MediaStream::Create(kStreamId1)) { worker_thread_->Invoke(RTC_FROM_HERE, [&]() { channel_manager_ = cricket::ChannelManager::Create(