Switch to RTC_LOG(LS_INFO) for non-perf VideoCodecTest text output.
This allows picking up the output in Android tests, where stdout/stderr
is lost but RTC_LOGs are picked up by the org.webrtc.Logging utility.
Tested: Downstream Android tests.
Bug: webrtc:10349
Change-Id: I1379f4303640dbc9621c64d9c88cf61bc8447ab6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132704
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27616}
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 8249822..2f36dc3 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -676,6 +676,7 @@
"../../api:videocodec_test_fixture_api",
"../../rtc_base:checks",
"../../rtc_base:rtc_numerics",
+ "../../rtc_base:stringutils",
"../../test:test_common",
"../rtp_rtcp:rtp_rtcp_format",
]
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index 318ed3e..129c596 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -12,11 +12,13 @@
#include <stdint.h>
#include <stdio.h>
+
#include <algorithm>
#include <cmath>
#include <memory>
#include <string>
#include <utility>
+#include <vector>
#include "absl/memory/memory.h"
#include "absl/types/optional.h"
@@ -37,6 +39,7 @@
#include "modules/video_coding/utility/ivf_file_writer.h"
#include "rtc_base/checks.h"
#include "rtc_base/cpu_time.h"
+#include "rtc_base/logging.h"
#include "rtc_base/strings/string_builder.h"
#include "rtc_base/time_utils.h"
#include "system_wrappers/include/cpu_info.h"
@@ -361,9 +364,8 @@
}
void Print() const {
if (config_.measure_cpu) {
- printf("cpu_usage_percent: %f\n",
- GetUsagePercent() / config_.NumberOfCores());
- printf("\n");
+ RTC_LOG(LS_INFO) << "cpu_usage_percent: "
+ << GetUsagePercent() / config_.NumberOfCores();
}
}
@@ -461,6 +463,8 @@
const std::vector<RateControlThresholds>* rc_thresholds,
const std::vector<QualityThresholds>* quality_thresholds,
const BitstreamThresholds* bs_thresholds) {
+ rtc::StringBuilder log_output;
+
for (size_t rate_profile_idx = 0; rate_profile_idx < rate_profiles.size();
++rate_profile_idx) {
const size_t first_frame_num = rate_profiles[rate_profile_idx].frame_num;
@@ -472,14 +476,14 @@
VideoStatistics send_stat = stats_.SliceAndCalcAggregatedVideoStatistic(
first_frame_num, last_frame_num);
- printf("==> Send stats\n");
- printf("%s\n\n", send_stat.ToString("send_").c_str());
+ log_output << "==> Send stats\n";
+ log_output << send_stat.ToString("send_") << "\n\n";
std::vector<VideoStatistics> layer_stats =
stats_.SliceAndCalcLayerVideoStatistic(first_frame_num, last_frame_num);
- printf("==> Receive stats\n");
+ log_output << "==> Receive stats\n";
for (const auto& layer_stat : layer_stats) {
- printf("%s\n\n", layer_stat.ToString("recv_").c_str());
+ log_output << layer_stat.ToString("recv_") << "\n\n";
// For perf dashboard.
char modifier_buf[256];
@@ -514,6 +518,9 @@
PrintResultHelper("min_psnr_yuv", layer_stat.min_psnr, "dB");
PrintResultHelper("avg_qp", layer_stat.avg_qp, "");
printf("\n");
+ if (layer_stat.temporal_idx == config_.NumberOfTemporalLayers() - 1) {
+ printf("\n");
+ }
}
const RateControlThresholds* rc_threshold =
@@ -528,11 +535,16 @@
}
if (config_.print_frame_level_stats) {
- stats_.PrintFrameStatistics();
+ log_output << "==> Frame stats\n";
+ std::vector<VideoCodecTestStats::FrameStatistics> frame_stats =
+ stats_.GetFrameStatistics();
+ for (const auto& frame_stat : frame_stats) {
+ log_output << frame_stat.ToString() << "\n";
+ }
}
+ RTC_LOG(LS_INFO) << log_output.str();
cpu_process_time_->Print();
- printf("\n");
}
void VideoCodecTestFixtureImpl::VerifyVideoStatistic(
@@ -711,23 +723,22 @@
void VideoCodecTestFixtureImpl::PrintSettings(
TaskQueueForTest* task_queue) const {
- printf("==> Config\n");
- printf("%s\n", config_.ToString().c_str());
+ rtc::StringBuilder log_output;
- printf("==> Codec names\n");
+ log_output << "==> Config\n";
+ log_output << config_.ToString() << "\n";
+
+ log_output << "==> Codec names\n";
std::string encoder_name;
std::string decoder_name;
task_queue->SendTask([this, &encoder_name, &decoder_name] {
encoder_name = encoder_->GetEncoderInfo().implementation_name;
decoder_name = decoders_.at(0)->ImplementationName();
});
- printf("enc_impl_name: %s\n", encoder_name.c_str());
- printf("dec_impl_name: %s\n", decoder_name.c_str());
- if (encoder_name == decoder_name) {
- printf("codec_impl_name: %s_%s\n", config_.CodecName().c_str(),
- encoder_name.c_str());
- }
- printf("\n");
+ log_output << "enc_impl_name: " << encoder_name << "\n";
+ log_output << "dec_impl_name: " << decoder_name << "\n";
+
+ RTC_LOG(LS_INFO) << log_output.str();
}
} // namespace test
diff --git a/modules/video_coding/codecs/test/videocodec_test_stats_impl.cc b/modules/video_coding/codecs/test/videocodec_test_stats_impl.cc
index 32cc124..e5d6d2a 100644
--- a/modules/video_coding/codecs/test/videocodec_test_stats_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_stats_impl.cc
@@ -19,6 +19,7 @@
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "rtc_base/checks.h"
#include "rtc_base/numerics/running_statistics.h"
+#include "rtc_base/strings/string_builder.h"
namespace webrtc {
namespace test {
@@ -114,15 +115,6 @@
num_temporal_layers - 1, true);
}
-void VideoCodecTestStatsImpl::PrintFrameStatistics() {
- for (size_t frame_num = 0; frame_num < layer_stats_[0].size(); ++frame_num) {
- for (const auto& it : layer_stats_) {
- const FrameStatistics& frame_stat = it.second[frame_num];
- printf("\n%s", frame_stat.ToString().c_str());
- }
- }
-}
-
size_t VideoCodecTestStatsImpl::Size(size_t spatial_idx) {
return layer_stats_[spatial_idx].size();
}
diff --git a/modules/video_coding/codecs/test/videocodec_test_stats_impl.h b/modules/video_coding/codecs/test/videocodec_test_stats_impl.h
index aee55cb..f68513a 100644
--- a/modules/video_coding/codecs/test/videocodec_test_stats_impl.h
+++ b/modules/video_coding/codecs/test/videocodec_test_stats_impl.h
@@ -12,7 +12,9 @@
#define MODULES_VIDEO_CODING_CODECS_TEST_VIDEOCODEC_TEST_STATS_IMPL_H_
#include <stddef.h>
+
#include <map>
+#include <string>
#include <vector>
#include "api/test/videocodec_test_stats.h" // NOLINT(build/include)
@@ -42,8 +44,6 @@
VideoStatistics SliceAndCalcAggregatedVideoStatistic(size_t first_frame_num,
size_t last_frame_num);
- void PrintFrameStatistics();
-
size_t Size(size_t spatial_idx);
void Clear();