| Index: webrtc/video/video_quality_test.cc
|
| diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
|
| index 7caa6367b001444c14cde8f3f764e609c3abde21..7c2a70221b82deafcd0803cd99334c81548d64f2 100644
|
| --- a/webrtc/video/video_quality_test.cc
|
| +++ b/webrtc/video/video_quality_test.cc
|
| @@ -46,6 +46,7 @@
|
| #include "webrtc/system_wrappers/include/field_trial.h"
|
| #include "webrtc/test/gtest.h"
|
| #include "webrtc/test/layer_filtering_transport.h"
|
| +#include "webrtc/test/rtp_file_writer.h"
|
| #include "webrtc/test/run_loop.h"
|
| #include "webrtc/test/statistics.h"
|
| #include "webrtc/test/testsupport/fileutils.h"
|
| @@ -55,8 +56,6 @@
|
| #include "webrtc/test/video_renderer.h"
|
| #include "webrtc/voice_engine/include/voe_base.h"
|
|
|
| -#include "webrtc/test/rtp_file_writer.h"
|
| -
|
| DEFINE_bool(save_worst_frame,
|
| false,
|
| "Enable saving a frame with the lowest PSNR to a jpeg file in the "
|
| @@ -162,8 +161,7 @@ class VideoAnalyzer : public PacketReceiver,
|
| int selected_sl,
|
| int selected_tl,
|
| bool is_quick_test_enabled,
|
| - Clock* clock,
|
| - std::string rtp_dump_name)
|
| + Clock* clock)
|
| : transport_(transport),
|
| receiver_(nullptr),
|
| call_(nullptr),
|
| @@ -199,9 +197,7 @@ class VideoAnalyzer : public PacketReceiver,
|
| is_quick_test_enabled_(is_quick_test_enabled),
|
| stats_polling_thread_(&PollStatsThread, this, "StatsPoller"),
|
| comparison_available_event_(false, false),
|
| - done_(true, false),
|
| - clock_(clock),
|
| - start_ms_(clock->TimeInMilliseconds()) {
|
| + done_(true, false) {
|
| // Create thread pool for CPU-expensive PSNR/SSIM calculations.
|
|
|
| // Try to use about as many threads as cores, but leave kMinCoresLeft alone,
|
| @@ -227,12 +223,6 @@ class VideoAnalyzer : public PacketReceiver,
|
| thread->Start();
|
| comparison_thread_pool_.push_back(thread);
|
| }
|
| -
|
| - if (!rtp_dump_name.empty()) {
|
| - fprintf(stdout, "Writing rtp dump to %s\n", rtp_dump_name.c_str());
|
| - rtp_file_writer_.reset(test::RtpFileWriter::Create(
|
| - test::RtpFileWriter::kRtpDump, rtp_dump_name));
|
| - }
|
| }
|
|
|
| ~VideoAnalyzer() {
|
| @@ -286,15 +276,6 @@ class VideoAnalyzer : public PacketReceiver,
|
| return receiver_->DeliverPacket(media_type, packet, length, packet_time);
|
| }
|
|
|
| - if (rtp_file_writer_) {
|
| - test::RtpPacket p;
|
| - memcpy(p.data, packet, length);
|
| - p.length = length;
|
| - p.original_length = length;
|
| - p.time_ms = clock_->TimeInMilliseconds() - start_ms_;
|
| - rtp_file_writer_->WritePacket(&p);
|
| - }
|
| -
|
| RtpUtility::RtpHeaderParser parser(packet, length);
|
| RTPHeader header;
|
| parser.Parse(&header);
|
| @@ -1120,10 +1101,6 @@ class VideoAnalyzer : public PacketReceiver,
|
| rtc::Event comparison_available_event_;
|
| std::deque<FrameComparison> comparisons_ GUARDED_BY(comparison_lock_);
|
| rtc::Event done_;
|
| -
|
| - std::unique_ptr<test::RtpFileWriter> rtp_file_writer_;
|
| - Clock* const clock_;
|
| - const int64_t start_ms_;
|
| };
|
|
|
| class Vp8EncoderFactory : public cricket::WebRtcVideoEncoderFactory {
|
| @@ -1808,13 +1785,21 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) {
|
| &recv_transport]() {
|
| CreateCalls(call_config, call_config);
|
|
|
| + std::unique_ptr<test::RtpFileWriter> rtp_file_writer;
|
| + if (!params_.logging.rtp_dump_name.empty()) {
|
| + LOG(LS_INFO) << "Writing rtp dump to " << params_.logging.rtp_dump_name;
|
| + rtp_file_writer.reset(test::RtpFileWriter::Create(
|
| + test::RtpFileWriter::kRtpDump, params_.logging.rtp_dump_name));
|
| + }
|
| +
|
| 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_);
|
| + payload_type_map_, std::move(rtp_file_writer));
|
|
|
| recv_transport = rtc::MakeUnique<test::DirectTransport>(
|
| - &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_);
|
| + &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_,
|
| + std::unique_ptr<test::RtpFileWriter>());
|
| });
|
|
|
| std::string graph_title = params_.analyzer.graph_title;
|
| @@ -1831,8 +1816,7 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) {
|
| kVideoSendSsrcs[params_.ss.selected_stream],
|
| kSendRtxSsrcs[params_.ss.selected_stream],
|
| static_cast<size_t>(params_.ss.selected_stream), params.ss.selected_sl,
|
| - params_.video.selected_tl, is_quick_test_enabled, clock_,
|
| - params_.logging.rtp_dump_name);
|
| + params_.video.selected_tl, is_quick_test_enabled, clock_);
|
|
|
| task_queue_.SendTask([&]() {
|
| analyzer->SetCall(sender_call_.get());
|
| @@ -1994,15 +1978,23 @@ void VideoQualityTest::RunWithRenderers(const Params& params) {
|
|
|
| CreateCalls(call_config, call_config);
|
|
|
| + std::unique_ptr<test::RtpFileWriter> rtp_file_writer;
|
| + if (!params_.logging.rtp_dump_name.empty()) {
|
| + LOG(LS_INFO) << "Writing rtp dump to " << params_.logging.rtp_dump_name;
|
| + rtp_file_writer.reset(test::RtpFileWriter::Create(
|
| + test::RtpFileWriter::kRtpDump, params_.logging.rtp_dump_name));
|
| + }
|
| +
|
| // TODO(minyue): consider if this is a good transport even for audio only
|
| // calls.
|
| 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_);
|
| + payload_type_map_, std::move(rtp_file_writer));
|
|
|
| recv_transport = rtc::MakeUnique<test::DirectTransport>(
|
| - &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_);
|
| + &task_queue_, params_.pipe, receiver_call_.get(), payload_type_map_,
|
| + std::unique_ptr<test::RtpFileWriter>());
|
|
|
| // TODO(ivica): Use two calls to be able to merge with RunWithAnalyzer or at
|
| // least share as much code as possible. That way this test would also match
|
|
|