From b4bb4eb9553625ea425f504fdafe4f4c9e57e7ab Mon Sep 17 00:00:00 2001 From: Christoffer Rodbro Date: Mon, 13 Nov 2017 13:03:52 +0100 Subject: [PATCH] Allow injection of NW models into VideoQualityTest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: b/67487983 Change-Id: Ife299dded29681406b2521edf5a7bf4577017974 Reviewed-on: https://webrtc-review.googlesource.com/21600 Commit-Queue: Christoffer Rodbro Reviewed-by: Stefan Holmer Reviewed-by: Erik Språng Cr-Commit-Position: refs/heads/master@{#20684} --- test/layer_filtering_transport.cc | 15 +++++++++++++++ test/layer_filtering_transport.h | 7 +++++++ video/video_quality_test.cc | 32 +++++++++++++++++++------------ video/video_quality_test.h | 4 ++++ 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/test/layer_filtering_transport.cc b/test/layer_filtering_transport.cc index 3a2a97ef5a..a8a337da65 100644 --- a/test/layer_filtering_transport.cc +++ b/test/layer_filtering_transport.cc @@ -36,6 +36,21 @@ LayerFilteringTransport::LayerFilteringTransport( selected_sl_(selected_sl), discarded_last_packet_(false) {} +LayerFilteringTransport::LayerFilteringTransport( + SingleThreadedTaskQueueForTesting* task_queue, + std::unique_ptr 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 abbc86a9ec..fe3b3d6d70 100644 --- a/test/layer_filtering_transport.h +++ b/test/layer_filtering_transport.h @@ -31,6 +31,13 @@ class LayerFilteringTransport : public test::DirectTransport { int selected_tl, int selected_sl, const std::map& payload_type_map); + LayerFilteringTransport(SingleThreadedTaskQueueForTesting* task_queue, + std::unique_ptr 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 f56426f11a..571c3a89d5 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -1764,6 +1764,20 @@ void VideoQualityTest::CreateCapturer() { RTC_DCHECK(video_capturer_.get()); } +std::unique_ptr +VideoQualityTest::CreateSendTransport() { + return rtc::MakeUnique( + &task_queue_, params_.pipe, sender_call_.get(), kPayloadTypeVP8, + kPayloadTypeVP9, params_.video.selected_tl, params_.ss.selected_sl, + payload_type_map_); +} + +std::unique_ptr +VideoQualityTest::CreateReceiveTransport() { + return rtc::MakeUnique( + &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_); +} + void VideoQualityTest::RunWithAnalyzer(const Params& params) { std::unique_ptr send_transport; std::unique_ptr recv_transport; @@ -1796,18 +1810,12 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) { 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( - &task_queue_, params_.pipe, sender_call_.get(), kPayloadTypeVP8, - kPayloadTypeVP9, params_.video.selected_tl, params_.ss.selected_sl, - payload_type_map_); - - recv_transport = rtc::MakeUnique( - &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 e0b3deae60..ddf4ecc5a4 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 @@ class VideoQualityTest : public test::CallTest { void StartEncodedFrameLogs(VideoSendStream* stream); void StartEncodedFrameLogs(VideoReceiveStream* stream); + virtual std::unique_ptr CreateSendTransport(); + virtual std::unique_ptr CreateReceiveTransport(); + // We need a more general capturer than the FrameGeneratorCapturer. std::unique_ptr video_capturer_; std::vector> thumbnail_capturers_;