[DVQA] Add capture_frame_rate metric as detailed stats
Bug: b/240540204 Change-Id: I3e4a8f903f5b01c31418cc3e29d4e663d62a86a3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/279640 Reviewed-by: Björn Terelius <terelius@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38427}
This commit is contained in:
parent
64a33f2453
commit
048f5c7516
@ -1049,6 +1049,12 @@ void DefaultVideoQualityAnalyzer::ReportResults(
|
|||||||
metric_metadata);
|
metric_metadata);
|
||||||
|
|
||||||
if (options_.report_detailed_frame_stats) {
|
if (options_.report_detailed_frame_stats) {
|
||||||
|
metrics_logger_->LogSingleValueMetric(
|
||||||
|
"capture_frame_rate", test_case_name,
|
||||||
|
stats.capture_frame_rate.IsEmpty()
|
||||||
|
? 0
|
||||||
|
: stats.capture_frame_rate.GetEventsPerSecond(),
|
||||||
|
Unit::kHertz, ImprovementDirection::kBiggerIsBetter, metric_metadata);
|
||||||
metrics_logger_->LogSingleValueMetric(
|
metrics_logger_->LogSingleValueMetric(
|
||||||
"num_encoded_frames", test_case_name, frame_counters.encoded,
|
"num_encoded_frames", test_case_name, frame_counters.encoded,
|
||||||
Unit::kCount, ImprovementDirection::kBiggerIsBetter, metric_metadata);
|
Unit::kCount, ImprovementDirection::kBiggerIsBetter, metric_metadata);
|
||||||
|
|||||||
@ -434,6 +434,7 @@ void DefaultVideoQualityAnalyzerFramesComparator::ProcessComparison(
|
|||||||
stats->ssim.AddSample(
|
stats->ssim.AddSample(
|
||||||
StatsSample(ssim, frame_stats.received_time, metadata));
|
StatsSample(ssim, frame_stats.received_time, metadata));
|
||||||
}
|
}
|
||||||
|
stats->capture_frame_rate.AddEvent(frame_stats.captured_time);
|
||||||
|
|
||||||
// Compute dropped phase for dropped frame
|
// Compute dropped phase for dropped frame
|
||||||
if (comparison.type == FrameComparisonType::kDroppedFrame) {
|
if (comparison.type == FrameComparisonType::kDroppedFrame) {
|
||||||
|
|||||||
@ -282,6 +282,11 @@ TEST(DefaultVideoQualityAnalyzerMetricNamesTest, MetricNamesForP2PAreCorrect) {
|
|||||||
.name = "actual_encode_bitrate",
|
.name = "actual_encode_bitrate",
|
||||||
.unit = Unit::kKilobitsPerSecond,
|
.unit = Unit::kKilobitsPerSecond,
|
||||||
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
||||||
|
MetricValidationInfo{
|
||||||
|
.test_case = "test_case/alice_video",
|
||||||
|
.name = "capture_frame_rate",
|
||||||
|
.unit = Unit::kHertz,
|
||||||
|
.improvement_direction = ImprovementDirection::kBiggerIsBetter},
|
||||||
MetricValidationInfo{
|
MetricValidationInfo{
|
||||||
.test_case = "test_case/alice_video",
|
.test_case = "test_case/alice_video",
|
||||||
.name = "num_encoded_frames",
|
.name = "num_encoded_frames",
|
||||||
@ -446,6 +451,11 @@ TEST(DefaultVideoQualityAnalyzerMetricNamesTest,
|
|||||||
.name = "actual_encode_bitrate",
|
.name = "actual_encode_bitrate",
|
||||||
.unit = Unit::kKilobitsPerSecond,
|
.unit = Unit::kKilobitsPerSecond,
|
||||||
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
||||||
|
MetricValidationInfo{
|
||||||
|
.test_case = "test_case/alice_video_alice_bob",
|
||||||
|
.name = "capture_frame_rate",
|
||||||
|
.unit = Unit::kHertz,
|
||||||
|
.improvement_direction = ImprovementDirection::kBiggerIsBetter},
|
||||||
MetricValidationInfo{
|
MetricValidationInfo{
|
||||||
.test_case = "test_case/alice_video_alice_bob",
|
.test_case = "test_case/alice_video_alice_bob",
|
||||||
.name = "num_encoded_frames",
|
.name = "num_encoded_frames",
|
||||||
@ -578,6 +588,11 @@ TEST(DefaultVideoQualityAnalyzerMetricNamesTest,
|
|||||||
.name = "actual_encode_bitrate",
|
.name = "actual_encode_bitrate",
|
||||||
.unit = Unit::kKilobitsPerSecond,
|
.unit = Unit::kKilobitsPerSecond,
|
||||||
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
.improvement_direction = ImprovementDirection::kNeitherIsBetter},
|
||||||
|
MetricValidationInfo{
|
||||||
|
.test_case = "test_case/alice_video_alice_charlie",
|
||||||
|
.name = "capture_frame_rate",
|
||||||
|
.unit = Unit::kHertz,
|
||||||
|
.improvement_direction = ImprovementDirection::kBiggerIsBetter},
|
||||||
MetricValidationInfo{
|
MetricValidationInfo{
|
||||||
.test_case = "test_case/alice_video_alice_charlie",
|
.test_case = "test_case/alice_video_alice_charlie",
|
||||||
.name = "num_encoded_frames",
|
.name = "num_encoded_frames",
|
||||||
@ -641,10 +656,10 @@ TEST(DefaultVideoQualityAnalyzerMetricNamesTest,
|
|||||||
|
|
||||||
std::vector<std::string> metrics =
|
std::vector<std::string> metrics =
|
||||||
ToTestCases(metrics_logger.GetCollectedMetrics());
|
ToTestCases(metrics_logger.GetCollectedMetrics());
|
||||||
EXPECT_THAT(metrics, SizeIs(53));
|
EXPECT_THAT(metrics, SizeIs(55));
|
||||||
EXPECT_THAT(metrics, Contains("test_case/alice_video_alice_bob").Times(26));
|
EXPECT_THAT(metrics, Contains("test_case/alice_video_alice_bob").Times(27));
|
||||||
EXPECT_THAT(metrics,
|
EXPECT_THAT(metrics,
|
||||||
Contains("test_case/alice_video_alice_charlie").Times(26));
|
Contains("test_case/alice_video_alice_charlie").Times(27));
|
||||||
EXPECT_THAT(metrics, Contains("test_case").Times(1));
|
EXPECT_THAT(metrics, Contains("test_case").Times(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -125,6 +125,7 @@ struct StreamStats {
|
|||||||
SamplesStatsCounter total_delay_incl_transport_ms;
|
SamplesStatsCounter total_delay_incl_transport_ms;
|
||||||
// Time between frames out from renderer.
|
// Time between frames out from renderer.
|
||||||
SamplesStatsCounter time_between_rendered_frames_ms;
|
SamplesStatsCounter time_between_rendered_frames_ms;
|
||||||
|
SamplesRateCounter capture_frame_rate;
|
||||||
SamplesRateCounter encode_frame_rate;
|
SamplesRateCounter encode_frame_rate;
|
||||||
SamplesStatsCounter encode_time_ms;
|
SamplesStatsCounter encode_time_ms;
|
||||||
SamplesStatsCounter decode_time_ms;
|
SamplesStatsCounter decode_time_ms;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user