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

Unified Diff: webrtc/video/video_quality_test.cc

Issue 2966153002: Fix issue with zero rtt reports when using FlexFEC and add perf test. (Closed)
Patch Set: Created 3 years, 5 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/full_stack_tests.cc ('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 5e99b50ff0c297404be5e8eca2e75001b4e953e5..1ae2e16a883127e7cf3f381a2949824c4d386e6d 100644
--- a/webrtc/video/video_quality_test.cc
+++ b/webrtc/video/video_quality_test.cc
@@ -155,6 +155,7 @@ class VideoAnalyzer : public PacketReceiver,
Clock* clock)
: transport_(transport),
receiver_(nullptr),
+ call_(nullptr),
send_stream_(nullptr),
receive_stream_(nullptr),
captured_frame_forwarder_(this, clock),
@@ -168,6 +169,7 @@ class VideoAnalyzer : public PacketReceiver,
selected_tl_(selected_tl),
pre_encode_proxy_(this),
encode_timing_proxy_(this),
+ last_fec_bytes_(0),
frames_to_process_(duration_frames),
frames_recorded_(0),
frames_processed_(0),
@@ -230,6 +232,12 @@ class VideoAnalyzer : public PacketReceiver,
video_capturer->AddOrUpdateSink(InputInterface(), wants);
}
+ void SetCall(Call* call) {
+ rtc::CritScope lock(&crit_);
+ RTC_DCHECK(!call_);
+ call_ = call;
+ }
+
void SetSendStream(VideoSendStream* stream) {
rtc::CritScope lock(&crit_);
RTC_DCHECK(!send_stream_);
@@ -650,6 +658,9 @@ class VideoAnalyzer : public PacketReceiver,
while (!done_.Wait(kSendStatsPollingIntervalMs)) {
rtc::CritScope crit(&comparison_lock_);
+ Call::Stats call_stats = call_->GetStats();
+ send_bandwidth_bps_.AddSample(call_stats.send_bandwidth_bps);
+
VideoSendStream::Stats send_stats = send_stream_->GetStats();
// It's not certain that we yet have estimates for any of these stats.
// Check that they are positive before mixing them in.
@@ -661,6 +672,13 @@ class VideoAnalyzer : public PacketReceiver,
encode_usage_percent_.AddSample(send_stats.encode_usage_percent);
if (send_stats.media_bitrate_bps > 0)
media_bitrate_bps_.AddSample(send_stats.media_bitrate_bps);
+ size_t fec_bytes = 0;
+ for (auto kv : send_stats.substreams) {
+ fec_bytes += kv.second.rtp_stats.fec.payload_bytes +
+ kv.second.rtp_stats.fec.padding_bytes;
+ }
+ fec_bitrate_bps_.AddSample((fec_bytes - last_fec_bytes_) * 8);
+ last_fec_bytes_ = fec_bytes;
if (receive_stream_ != nullptr) {
VideoReceiveStream::Stats receive_stats = receive_stream_->GetStats();
@@ -764,6 +782,8 @@ class VideoAnalyzer : public PacketReceiver,
PrintResult("encode_frame_rate", encode_frame_rate_, " fps");
PrintResult("encode_time", encode_time_ms_, " ms");
PrintResult("media_bitrate", media_bitrate_bps_, " bps");
+ PrintResult("fec_bitrate", fec_bitrate_bps_, " bps");
+ PrintResult("send_bandwidth", send_bandwidth_bps_, " bps");
if (receive_stream_ != nullptr) {
PrintResult("decode_time", decode_time_ms_, " ms");
@@ -969,6 +989,7 @@ class VideoAnalyzer : public PacketReceiver,
frames_.push_back(video_frame);
}
+ Call* call_;
VideoSendStream* send_stream_;
VideoReceiveStream* receive_stream_;
CapturedFrameForwarder captured_frame_forwarder_;
@@ -997,8 +1018,11 @@ class VideoAnalyzer : public PacketReceiver,
test::Statistics decode_time_ms_ GUARDED_BY(comparison_lock_);
test::Statistics decode_time_max_ms_ GUARDED_BY(comparison_lock_);
test::Statistics media_bitrate_bps_ GUARDED_BY(comparison_lock_);
+ test::Statistics fec_bitrate_bps_ GUARDED_BY(comparison_lock_);
+ test::Statistics send_bandwidth_bps_ GUARDED_BY(comparison_lock_);
test::Statistics memory_usage_ GUARDED_BY(comparison_lock_);
+ size_t last_fec_bytes_;
const int frames_to_process_;
int frames_recorded_;
@@ -1717,6 +1741,7 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) {
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_);
+ analyzer.SetCall(sender_call_.get());
analyzer.SetReceiver(receiver_call_->Receiver());
send_transport.SetReceiver(&analyzer);
recv_transport.SetReceiver(sender_call_->Receiver());
« no previous file with comments | « webrtc/video/full_stack_tests.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698