Add calculation of actual encode bitrate into DefaultVideoQualityAnalyzer
Bug: webrtc:11381
Change-Id: Ic636412fef5e4134f47974fe24a24d8c7636bcdd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171107
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30860}
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
index 7f61a37..81a0448 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
@@ -192,6 +192,7 @@
stream_frame_counters_[it->second.stream_label].encoded++;
}
it->second.encoded_time = Now();
+ it->second.encoded_image_size = encoded_image.size();
}
void DefaultVideoQualityAnalyzer::OnFrameDropped(
@@ -515,6 +516,7 @@
stats->encode_time_ms.AddSample(
(frame_stats.encoded_time - frame_stats.pre_encode_time).ms());
stats->encode_frame_rate.AddEvent(frame_stats.encoded_time);
+ stats->total_encoded_images_payload += frame_stats.encoded_image_size;
} else {
if (frame_stats.pre_encode_time.IsFinite()) {
stats->dropped_by_encoder++;
@@ -590,6 +592,7 @@
const StreamStats& stats,
const FrameCounters& frame_counters) {
using ::webrtc::test::ImproveDirection;
+ TimeDelta test_duration = Now() - start_time_;
double sum_squared_interframe_delays_secs = 0;
Timestamp video_start_time = Timestamp::PlusInfinity();
@@ -667,6 +670,11 @@
/*important=*/false, ImproveDirection::kSmallerIsBetter);
ReportResult("max_skipped", test_case_name, stats.skipped_between_rendered,
"count", ImproveDirection::kSmallerIsBetter);
+ test::PrintResult(
+ "actual_encode_bitrate", "", test_case_name,
+ static_cast<double>(stats.total_encoded_images_payload) /
+ static_cast<double>(test_duration.us()) * kMicrosPerSecond,
+ "bytesPerSecond", /*important=*/false, ImproveDirection::kNone);
}
void DefaultVideoQualityAnalyzer::ReportResult(
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
index 219a77b..31e4267 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h
@@ -102,6 +102,7 @@
SamplesStatsCounter time_between_freezes_ms;
SamplesStatsCounter resolution_of_rendered_frame;
+ int64_t total_encoded_images_payload = 0;
int64_t dropped_by_encoder = 0;
int64_t dropped_before_encoder = 0;
};
@@ -182,6 +183,8 @@
absl::optional<int> rendered_frame_width = absl::nullopt;
absl::optional<int> rendered_frame_height = absl::nullopt;
+
+ int64_t encoded_image_size = 0;
};
// Describes why comparison was done in overloaded mode (without calculating
diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
index 2c7eb0e..b461c6a 100644
--- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
+++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
@@ -42,16 +42,12 @@
const webrtc::StatsReport::Value* transmission_bitrate =
stats_report->FindValue(
StatsReport::StatsValueName::kStatsValueNameTransmitBitrate);
- const webrtc::StatsReport::Value* actual_encode_bitrate =
- stats_report->FindValue(
- StatsReport::StatsValueName::kStatsValueNameActualEncBitrate);
const webrtc::StatsReport::Value* target_encode_bitrate =
stats_report->FindValue(
StatsReport::StatsValueName::kStatsValueNameTargetEncBitrate);
RTC_CHECK(available_send_bandwidth);
RTC_CHECK(retransmission_bitrate);
RTC_CHECK(transmission_bitrate);
- RTC_CHECK(actual_encode_bitrate);
RTC_CHECK(target_encode_bitrate);
rtc::CritScope crit(&video_bwe_stats_lock_);
@@ -62,8 +58,6 @@
transmission_bitrate->int_val());
video_bwe_stats.retransmission_bitrate.AddSample(
retransmission_bitrate->int_val());
- video_bwe_stats.actual_encode_bitrate.AddSample(
- actual_encode_bitrate->int_val());
video_bwe_stats.target_encode_bitrate.AddSample(
target_encode_bitrate->int_val());
}
@@ -93,9 +87,6 @@
ReportResult("retransmission_bitrate", test_case_name,
video_bwe_stats.retransmission_bitrate / kBitsInByte,
"bytesPerSecond");
- ReportResult("actual_encode_bitrate", test_case_name,
- video_bwe_stats.actual_encode_bitrate / kBitsInByte,
- "bytesPerSecond");
ReportResult("target_encode_bitrate", test_case_name,
video_bwe_stats.target_encode_bitrate / kBitsInByte,
"bytesPerSecond");
diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
index 28cb0d8..fe2f169 100644
--- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
+++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h
@@ -26,7 +26,6 @@
SamplesStatsCounter available_send_bandwidth;
SamplesStatsCounter transmission_bitrate;
SamplesStatsCounter retransmission_bitrate;
- SamplesStatsCounter actual_encode_bitrate;
SamplesStatsCounter target_encode_bitrate;
};