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}
This commit is contained in:
Christoffer Rodbro
2017-11-13 13:03:52 +01:00
committed by Commit Bot
parent e39c379427
commit b4bb4eb955
4 changed files with 46 additions and 12 deletions

View File

@ -36,6 +36,21 @@ LayerFilteringTransport::LayerFilteringTransport(
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_;
}

View File

@ -31,6 +31,13 @@ class LayerFilteringTransport : public test::DirectTransport {
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,

View File

@ -1764,6 +1764,20 @@ void VideoQualityTest::CreateCapturer() {
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 @@ 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<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())

View File

@ -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<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_;