Make video quality analysis unittests print to log instead of stdout.
I think it's best to avoid printing these perf numbers since
when we turn on perf measurements for Android, it will be for
all tests as far as I understand it works today.
TEST=trybots passing tools_unittests
BUG=none
R=phoglund@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/3109005
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@5072 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/tools/frame_analyzer/video_quality_analysis.cc b/tools/frame_analyzer/video_quality_analysis.cc
index 6e738c2..b8c90b1 100644
--- a/tools/frame_analyzer/video_quality_analysis.cc
+++ b/tools/frame_analyzer/video_quality_analysis.cc
@@ -232,6 +232,11 @@
void PrintMaxRepeatedAndSkippedFrames(const std::string& label,
const std::string& stats_file_name) {
+ PrintMaxRepeatedAndSkippedFrames(stdout, label, stats_file_name);
+}
+
+void PrintMaxRepeatedAndSkippedFrames(FILE* output, const std::string& label,
+ const std::string& stats_file_name) {
FILE* stats_file = fopen(stats_file_name.c_str(), "r");
if (stats_file == NULL) {
fprintf(stderr, "Couldn't open stats file for reading: %s\n",
@@ -271,33 +276,38 @@
}
previous_frame_number = decoded_frame_number;
}
- fprintf(stdout, "RESULT Max_repeated: %s= %d\n", label.c_str(),
+ fprintf(output, "RESULT Max_repeated: %s= %d\n", label.c_str(),
max_repeated_frames);
- fprintf(stdout, "RESULT Max_skipped: %s= %d\n", label.c_str(),
+ fprintf(output, "RESULT Max_skipped: %s= %d\n", label.c_str(),
max_skipped_frames);
fclose(stats_file);
}
void PrintAnalysisResults(const std::string& label, ResultsContainer* results) {
+ PrintAnalysisResults(stdout, label, results);
+}
+
+void PrintAnalysisResults(FILE* output, const std::string& label,
+ ResultsContainer* results) {
std::vector<AnalysisResult>::iterator iter;
- fprintf(stdout, "RESULT Unique_frames_count: %s= %u\n", label.c_str(),
+ fprintf(output, "RESULT Unique_frames_count: %s= %u\n", label.c_str(),
static_cast<unsigned int>(results->frames.size()));
if (results->frames.size() > 0u) {
- fprintf(stdout, "RESULT PSNR: %s= [", label.c_str());
+ fprintf(output, "RESULT PSNR: %s= [", label.c_str());
for (iter = results->frames.begin(); iter != results->frames.end() - 1;
++iter) {
- fprintf(stdout, "%f,", iter->psnr_value);
+ fprintf(output, "%f,", iter->psnr_value);
}
- fprintf(stdout, "%f] dB\n", iter->psnr_value);
+ fprintf(output, "%f] dB\n", iter->psnr_value);
- fprintf(stdout, "RESULT SSIM: %s= [", label.c_str());
+ fprintf(output, "RESULT SSIM: %s= [", label.c_str());
for (iter = results->frames.begin(); iter != results->frames.end() - 1;
++iter) {
- fprintf(stdout, "%f,", iter->ssim_value);
+ fprintf(output, "%f,", iter->ssim_value);
}
- fprintf(stdout, "%f]\n", iter->ssim_value);
+ fprintf(output, "%f]\n", iter->ssim_value);
}
}
diff --git a/tools/frame_analyzer/video_quality_analysis.h b/tools/frame_analyzer/video_quality_analysis.h
index e78fa61..b2ecc08 100644
--- a/tools/frame_analyzer/video_quality_analysis.h
+++ b/tools/frame_analyzer/video_quality_analysis.h
@@ -67,11 +67,19 @@
// no output will be written.
void PrintAnalysisResults(const std::string& label, ResultsContainer* results);
+// Similar to the above, but will print to the specified file handle.
+void PrintAnalysisResults(FILE* output, const std::string& label,
+ ResultsContainer* results);
+
// Calculates max repeated and skipped frames and prints them to stdout in a
// format that is compatible with Chromium performance numbers.
void PrintMaxRepeatedAndSkippedFrames(const std::string& label,
const std::string& stats_file_name);
+// Similar to the above, but will print to the specified file handle.
+void PrintMaxRepeatedAndSkippedFrames(FILE* output, const std::string& label,
+ const std::string& stats_file_name);
+
// Gets the next line from an open stats file.
bool GetNextStatsLine(FILE* stats_file, char* line);
diff --git a/tools/frame_analyzer/video_quality_analysis_unittest.cc b/tools/frame_analyzer/video_quality_analysis_unittest.cc
index a24d4ae..85fd118 100644
--- a/tools/frame_analyzer/video_quality_analysis_unittest.cc
+++ b/tools/frame_analyzer/video_quality_analysis_unittest.cc
@@ -21,41 +21,59 @@
namespace webrtc {
namespace test {
+// Setup a log file to write the output to instead of stdout because we don't
+// want those numbers to be picked up as perf numbers.
+class VideoQualityAnalysisTest : public ::testing::Test {
+ protected:
+ static void SetUpTestCase() {
+ std::string log_filename = webrtc::test::OutputPath() +
+ "VideoQualityAnalysisTest.log";
+ logfile_ = fopen(log_filename.c_str(), "w");
+ ASSERT_TRUE(logfile_ != NULL);
+ }
+ static void TearDownTestCase() {
+ ASSERT_EQ(0, fclose(logfile_));
+ }
+ static FILE* logfile_;
+};
+FILE* VideoQualityAnalysisTest::logfile_ = NULL;
-TEST(VideoQualityAnalysisTest, PrintAnalysisResultsEmpty) {
+TEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsEmpty) {
ResultsContainer result;
- PrintAnalysisResults("Empty", &result);
+ PrintAnalysisResults(logfile_, "Empty", &result);
}
-TEST(VideoQualityAnalysisTest, PrintAnalysisResultsOneFrame) {
+TEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsOneFrame) {
ResultsContainer result;
result.frames.push_back(AnalysisResult(0, 35.0, 0.9));
- PrintAnalysisResults("OneFrame", &result);
+ PrintAnalysisResults(logfile_, "OneFrame", &result);
}
-TEST(VideoQualityAnalysisTest, PrintAnalysisResultsThreeFrames) {
+TEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsThreeFrames) {
ResultsContainer result;
result.frames.push_back(AnalysisResult(0, 35.0, 0.9));
result.frames.push_back(AnalysisResult(1, 34.0, 0.8));
result.frames.push_back(AnalysisResult(2, 33.0, 0.7));
- PrintAnalysisResults("ThreeFrames", &result);
+ PrintAnalysisResults(logfile_, "ThreeFrames", &result);
}
-TEST(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesInvalidFile) {
+TEST_F(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesInvalidFile) {
std::string stats_filename = OutputPath() + "non-existing-stats-file.txt";
remove(stats_filename.c_str());
- PrintMaxRepeatedAndSkippedFrames("NonExistingStatsFile", stats_filename);
+ PrintMaxRepeatedAndSkippedFrames(logfile_, "NonExistingStatsFile",
+ stats_filename);
}
-TEST(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesEmptyStatsFile) {
+TEST_F(VideoQualityAnalysisTest,
+ PrintMaxRepeatedAndSkippedFramesEmptyStatsFile) {
std::string stats_filename = OutputPath() + "empty-stats.txt";
std::ofstream stats_file;
stats_file.open(stats_filename.c_str());
stats_file.close();
- PrintMaxRepeatedAndSkippedFrames("EmptyStatsFile", stats_filename);
+ PrintMaxRepeatedAndSkippedFrames(logfile_, "EmptyStatsFile", stats_filename);
}
-TEST(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesNormalFile) {
+TEST_F(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesNormalFile) {
std::string stats_filename = OutputPath() + "stats.txt";
std::ofstream stats_file;
stats_file.open(stats_filename.c_str());
@@ -65,7 +83,7 @@
stats_file << "frame_0004 0106\n";
stats_file.close();
- PrintMaxRepeatedAndSkippedFrames("NormalStatsFile", stats_filename);
+ PrintMaxRepeatedAndSkippedFrames(logfile_, "NormalStatsFile", stats_filename);
}