Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: webrtc/video/video_quality_test.cc

Issue 2734753004: Revert of Added large room scenario to full-stack tests. Added thumbnail streams functionality to call test/v… (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/video_quality_test.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/video_quality_test.cc
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
index 48347d7b4e0691a57b634a4afc6e3637c4b9b6c9..7cc71dcf0e114c728359dec6e12b734f49bfef6d 100644
--- a/webrtc/video/video_quality_test.cc
+++ b/webrtc/video/video_quality_test.cc
@@ -57,8 +57,6 @@
constexpr int kOpusMinBitrateBps = 6000;
constexpr int kOpusBitrateFbBps = 32000;
constexpr int kFramesSentInQuickTest = 1;
-constexpr uint32_t kThumbnailSendSsrcStart = 0xE0000;
-constexpr uint32_t kThumbnailRtxSsrcStart = 0xF0000;
struct VoiceEngineState {
VoiceEngineState()
@@ -1032,8 +1030,7 @@
analyzer({"", 0.0, 0.0, 0, "", ""}),
pipe(),
logs(false),
- ss({std::vector<VideoStream>(), 0, 0, -1, std::vector<SpatialLayer>()}),
- num_thumbnails(0) {}
+ ss({std::vector<VideoStream>(), 0, 0, -1, std::vector<SpatialLayer>()}) {}
VideoQualityTest::Params::~Params() = default;
@@ -1101,13 +1098,6 @@
} else if (params_.video.codec == "VP9") {
RTC_CHECK_EQ(params_.ss.streams.size(), 1);
}
- RTC_CHECK_GE(params_.num_thumbnails, 0);
- if (params_.num_thumbnails > 0) {
- RTC_CHECK_EQ(params_.ss.num_spatial_layers, 1);
- RTC_CHECK_EQ(params_.ss.streams.size(), 3);
- RTC_CHECK_EQ(params_.video.num_temporal_layers, 3);
- RTC_CHECK_EQ(params_.video.codec, "VP8");
- }
}
// Static.
@@ -1148,25 +1138,8 @@
stream.target_bitrate_bps = params.video.target_bitrate_bps;
stream.max_bitrate_bps = params.video.max_bitrate_bps;
stream.max_qp = 52;
- if (params.video.num_temporal_layers == 2) {
+ if (params.video.num_temporal_layers == 2)
stream.temporal_layer_thresholds_bps.push_back(stream.target_bitrate_bps);
- } else if (params.video.num_temporal_layers == 3) {
- stream.temporal_layer_thresholds_bps.push_back(stream.max_bitrate_bps / 4);
- stream.temporal_layer_thresholds_bps.push_back(stream.target_bitrate_bps);
- }
- return stream;
-}
-
-// Static.
-VideoStream VideoQualityTest::DefaultThumbnailStream() {
- VideoStream stream;
- stream.width = 320;
- stream.height = 180;
- stream.max_framerate = 7;
- stream.min_bitrate_bps = 7500;
- stream.target_bitrate_bps = 37500;
- stream.max_bitrate_bps = 50000;
- stream.max_qp = 52;
return stream;
}
@@ -1354,92 +1327,6 @@
}
}
-void VideoQualityTest::SetupThumbnails(Transport* send_transport,
- Transport* recv_transport) {
- for (int i = 0; i < params_.num_thumbnails; ++i) {
- thumbnail_encoders_.emplace_back(VP8Encoder::Create());
-
- // Thumbnails will be send in the other way: from receiver_call to
- // sender_call.
- VideoSendStream::Config thumbnail_send_config(recv_transport);
- thumbnail_send_config.rtp.ssrcs.push_back(kThumbnailSendSsrcStart + i);
- thumbnail_send_config.encoder_settings.encoder =
- thumbnail_encoders_.back().get();
- thumbnail_send_config.encoder_settings.payload_name = params_.video.codec;
- thumbnail_send_config.encoder_settings.payload_type = kPayloadTypeVP8;
- thumbnail_send_config.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
- thumbnail_send_config.rtp.rtx.payload_type = kSendRtxPayloadType;
- thumbnail_send_config.rtp.rtx.ssrcs.push_back(kThumbnailRtxSsrcStart + i);
- thumbnail_send_config.rtp.extensions.clear();
- if (params_.call.send_side_bwe) {
- thumbnail_send_config.rtp.extensions.push_back(
- RtpExtension(RtpExtension::kTransportSequenceNumberUri,
- test::kTransportSequenceNumberExtensionId));
- } else {
- thumbnail_send_config.rtp.extensions.push_back(RtpExtension(
- RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId));
- }
-
- VideoEncoderConfig thumbnail_encoder_config;
- thumbnail_encoder_config.min_transmit_bitrate_bps = 7500;
- thumbnail_send_config.suspend_below_min_bitrate =
- params_.video.suspend_below_min_bitrate;
- thumbnail_encoder_config.number_of_streams = 1;
- thumbnail_encoder_config.max_bitrate_bps = 50000;
- thumbnail_encoder_config.video_stream_factory =
- new rtc::RefCountedObject<VideoStreamFactory>(
- std::vector<webrtc::VideoStream>{DefaultThumbnailStream()});
- thumbnail_encoder_config.spatial_layers = params_.ss.spatial_layers;
-
- VideoReceiveStream::Config thumbnail_receive_config(send_transport);
- thumbnail_receive_config.rtp.remb = false;
- thumbnail_receive_config.rtp.transport_cc = true;
- thumbnail_receive_config.rtp.local_ssrc = kReceiverLocalVideoSsrc;
- for (const RtpExtension& extension : thumbnail_send_config.rtp.extensions)
- thumbnail_receive_config.rtp.extensions.push_back(extension);
- thumbnail_receive_config.renderer = &fake_renderer_;
-
- VideoReceiveStream::Decoder decoder =
- test::CreateMatchingDecoder(thumbnail_send_config.encoder_settings);
- allocated_decoders_.push_back(
- std::unique_ptr<VideoDecoder>(decoder.decoder));
- thumbnail_receive_config.decoders.clear();
- thumbnail_receive_config.decoders.push_back(decoder);
- thumbnail_receive_config.rtp.remote_ssrc =
- thumbnail_send_config.rtp.ssrcs[0];
-
- thumbnail_receive_config.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
- thumbnail_receive_config.rtp.rtx_ssrc = kThumbnailRtxSsrcStart + i;
- thumbnail_receive_config.rtp.rtx_payload_types[kPayloadTypeVP8] =
- kSendRtxPayloadType;
- thumbnail_receive_config.rtp.transport_cc = params_.call.send_side_bwe;
- thumbnail_receive_config.rtp.remb = !params_.call.send_side_bwe;
-
- thumbnail_encoder_configs_.push_back(thumbnail_encoder_config.Copy());
- thumbnail_send_configs_.push_back(thumbnail_send_config.Copy());
- thumbnail_receive_configs_.push_back(thumbnail_receive_config.Copy());
- }
-
- for (int i = 0; i < params_.num_thumbnails; ++i) {
- thumbnail_send_streams_.push_back(receiver_call_->CreateVideoSendStream(
- thumbnail_send_configs_[i].Copy(),
- thumbnail_encoder_configs_[i].Copy()));
- thumbnail_receive_streams_.push_back(sender_call_->CreateVideoReceiveStream(
- thumbnail_receive_configs_[i].Copy()));
- }
-}
-
-void VideoQualityTest::DestroyThumbnailStreams() {
- for (VideoSendStream* thumbnail_send_stream : thumbnail_send_streams_)
- receiver_call_->DestroyVideoSendStream(thumbnail_send_stream);
- thumbnail_send_streams_.clear();
- for (VideoReceiveStream* thumbnail_receive_stream :
- thumbnail_receive_streams_)
- sender_call_->DestroyVideoReceiveStream(thumbnail_receive_stream);
- thumbnail_send_streams_.clear();
- thumbnail_receive_streams_.clear();
-}
-
void VideoQualityTest::SetupScreenshareOrSVC() {
if (params_.screenshare.enabled) {
// Fill out codec settings.
@@ -1509,15 +1396,6 @@
}
}
-void VideoQualityTest::SetupThumbnailCapturers(size_t num_thumbnail_streams) {
- VideoStream thumbnail = DefaultThumbnailStream();
- for (size_t i = 0; i < num_thumbnail_streams; ++i) {
- thumbnail_capturers_.emplace_back(test::FrameGeneratorCapturer::Create(
- static_cast<int>(thumbnail.width), static_cast<int>(thumbnail.height),
- thumbnail.max_framerate, clock_));
- }
-}
-
void VideoQualityTest::CreateCapturer() {
if (params_.screenshare.enabled) {
test::FrameGeneratorCapturer* frame_generator_capturer =
@@ -1579,11 +1457,17 @@
if (graph_title.empty())
graph_title = VideoQualityTest::GenerateGraphTitle();
+ // In the case of different resolutions, the functions calculating PSNR and
+ // SSIM return -1.0, instead of a positive value as usual. VideoAnalyzer
+ // aborts if the average psnr/ssim are below the given threshold, which is
+ // 0.0 by default. Setting the thresholds to -1.1 prevents the unnecessary
+ // abort.
VideoStream& selected_stream = params_.ss.streams[params_.ss.selected_stream];
bool is_quick_test_enabled = field_trial::IsEnabled("WebRTC-QuickPerfTest");
VideoAnalyzer analyzer(
&send_transport, params_.analyzer.test_label,
+
params_.analyzer.avg_psnr_threshold, params_.analyzer.avg_ssim_threshold,
is_quick_test_enabled
? kFramesSentInQuickTest
@@ -1599,7 +1483,6 @@
recv_transport.SetReceiver(sender_call_->Receiver());
SetupVideo(&analyzer, &recv_transport);
- SetupThumbnails(&analyzer, &recv_transport);
video_receive_configs_[params_.ss.selected_stream].renderer = &analyzer;
video_send_config_.pre_encode_callback = analyzer.pre_encode_proxy();
RTC_DCHECK(!video_send_config_.post_encode_callback);
@@ -1616,60 +1499,33 @@
video_send_stream_->SetSource(analyzer.OutputInterface(),
degradation_preference_);
- SetupThumbnailCapturers(params_.num_thumbnails);
- for (size_t i = 0; i < thumbnail_send_streams_.size(); ++i) {
- thumbnail_send_streams_[i]->SetSource(thumbnail_capturers_[i].get(),
- degradation_preference_);
- }
-
CreateCapturer();
-
rtc::VideoSinkWants wants;
video_capturer_->AddOrUpdateSink(analyzer.InputInterface(), wants);
StartEncodedFrameLogs(video_send_stream_);
StartEncodedFrameLogs(video_receive_streams_[0]);
video_send_stream_->Start();
- for (VideoSendStream* thumbnail_send_stream : thumbnail_send_streams_)
- thumbnail_send_stream->Start();
for (VideoReceiveStream* receive_stream : video_receive_streams_)
receive_stream->Start();
for (FlexfecReceiveStream* receive_stream : flexfec_receive_streams_)
receive_stream->Start();
- for (VideoReceiveStream* thumbnail_receive_stream :
- thumbnail_receive_streams_)
- thumbnail_receive_stream->Start();
-
analyzer.StartMeasuringCpuProcessTime();
-
video_capturer_->Start();
- for (std::unique_ptr<test::VideoCapturer>& video_caputurer :
- thumbnail_capturers_) {
- video_caputurer->Start();
- }
analyzer.Wait();
send_transport.StopSending();
recv_transport.StopSending();
- for (std::unique_ptr<test::VideoCapturer>& video_caputurer :
- thumbnail_capturers_)
- video_caputurer->Stop();
video_capturer_->Stop();
- for (VideoReceiveStream* thumbnail_receive_stream :
- thumbnail_receive_streams_)
- thumbnail_receive_stream->Stop();
for (FlexfecReceiveStream* receive_stream : flexfec_receive_streams_)
receive_stream->Stop();
for (VideoReceiveStream* receive_stream : video_receive_streams_)
receive_stream->Stop();
- for (VideoSendStream* thumbnail_send_stream : thumbnail_send_streams_)
- thumbnail_send_stream->Stop();
video_send_stream_->Stop();
DestroyStreams();
- DestroyThumbnailStreams();
if (graph_data_output_file)
fclose(graph_data_output_file);
« no previous file with comments | « webrtc/video/video_quality_test.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698