Allow injection of NW models into VideoQualityTest

Bug: b/67487983
Change-Id: Ife299dded29681406b2521edf5a7bf4577017974
Reviewed-on: https://webrtc-review.googlesource.com/21600
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20684}
diff --git a/test/layer_filtering_transport.cc b/test/layer_filtering_transport.cc
index 3a2a97e..a8a337d 100644
--- a/test/layer_filtering_transport.cc
+++ b/test/layer_filtering_transport.cc
@@ -36,6 +36,21 @@
       selected_sl_(selected_sl),
       discarded_last_packet_(false) {}
 
+LayerFilteringTransport::LayerFilteringTransport(
+    SingleThreadedTaskQueueForTesting* task_queue,
+    std::unique_ptr<FakeNetworkPipe> pipe,
+    Call* send_call,
+    uint8_t vp8_video_payload_type,
+    uint8_t vp9_video_payload_type,
+    int selected_tl,
+    int selected_sl)
+    : DirectTransport(task_queue, std::move(pipe), send_call),
+      vp8_video_payload_type_(vp8_video_payload_type),
+      vp9_video_payload_type_(vp9_video_payload_type),
+      selected_tl_(selected_tl),
+      selected_sl_(selected_sl),
+      discarded_last_packet_(false) {}
+
 bool LayerFilteringTransport::DiscardedLastPacket() const {
   return discarded_last_packet_;
 }
diff --git a/test/layer_filtering_transport.h b/test/layer_filtering_transport.h
index abbc86a..fe3b3d6 100644
--- a/test/layer_filtering_transport.h
+++ b/test/layer_filtering_transport.h
@@ -31,6 +31,13 @@
                           int selected_tl,
                           int selected_sl,
                           const std::map<uint8_t, MediaType>& payload_type_map);
+  LayerFilteringTransport(SingleThreadedTaskQueueForTesting* task_queue,
+                          std::unique_ptr<FakeNetworkPipe> pipe,
+                          Call* send_call,
+                          uint8_t vp8_video_payload_type,
+                          uint8_t vp9_video_payload_type,
+                          int selected_tl,
+                          int selected_sl);
   bool DiscardedLastPacket() const;
   bool SendRtp(const uint8_t* data,
                size_t length,
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index f56426f..571c3a8 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1764,6 +1764,20 @@
   RTC_DCHECK(video_capturer_.get());
 }
 
+std::unique_ptr<test::LayerFilteringTransport>
+VideoQualityTest::CreateSendTransport() {
+  return rtc::MakeUnique<test::LayerFilteringTransport>(
+      &task_queue_, params_.pipe, sender_call_.get(), kPayloadTypeVP8,
+      kPayloadTypeVP9, params_.video.selected_tl, params_.ss.selected_sl,
+      payload_type_map_);
+}
+
+std::unique_ptr<test::DirectTransport>
+VideoQualityTest::CreateReceiveTransport() {
+  return rtc::MakeUnique<test::DirectTransport>(
+      &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_);
+}
+
 void VideoQualityTest::RunWithAnalyzer(const Params& params) {
   std::unique_ptr<test::LayerFilteringTransport> send_transport;
   std::unique_ptr<test::DirectTransport> recv_transport;
@@ -1796,18 +1810,12 @@
   Call::Config call_config(event_log_.get());
   call_config.bitrate_config = params.call.call_bitrate_config;
 
-  task_queue_.SendTask([this, &call_config, &send_transport,
-                        &recv_transport]() {
-    CreateCalls(call_config, call_config);
-
-    send_transport = rtc::MakeUnique<test::LayerFilteringTransport>(
-        &task_queue_, params_.pipe, sender_call_.get(), kPayloadTypeVP8,
-        kPayloadTypeVP9, params_.video.selected_tl, params_.ss.selected_sl,
-        payload_type_map_);
-
-    recv_transport = rtc::MakeUnique<test::DirectTransport>(
-        &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_);
-  });
+  task_queue_.SendTask(
+      [this, &call_config, &send_transport, &recv_transport]() {
+        CreateCalls(call_config, call_config);
+        send_transport = CreateSendTransport();
+        recv_transport = CreateReceiveTransport();
+      });
 
   std::string graph_title = params_.analyzer.graph_title;
   if (graph_title.empty())
diff --git a/video/video_quality_test.h b/video/video_quality_test.h
index e0b3dea..ddf4ecc 100644
--- a/video/video_quality_test.h
+++ b/video/video_quality_test.h
@@ -18,6 +18,7 @@
 #include "media/engine/simulcast_encoder_adapter.h"
 #include "test/call_test.h"
 #include "test/frame_generator.h"
+#include "test/layer_filtering_transport.h"
 
 namespace webrtc {
 
@@ -136,6 +137,9 @@
   void StartEncodedFrameLogs(VideoSendStream* stream);
   void StartEncodedFrameLogs(VideoReceiveStream* stream);
 
+  virtual std::unique_ptr<test::LayerFilteringTransport> CreateSendTransport();
+  virtual std::unique_ptr<test::DirectTransport> CreateReceiveTransport();
+
   // We need a more general capturer than the FrameGeneratorCapturer.
   std::unique_ptr<test::VideoCapturer> video_capturer_;
   std::vector<std::unique_ptr<test::VideoCapturer>> thumbnail_capturers_;