13524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org/* 23524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 33524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * 43524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * Use of this source code is governed by a BSD-style license 53524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * that can be found in the LICENSE file in the root of the source 63524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * tree. An additional intellectual property rights grant can be found 73524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * in the file PATENTS. All contributing project authors may 83524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org * be found in the AUTHORS file in the root of the source tree. 93524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org */ 103524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 113524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org// This test doesn't actually verify the output since it's just printed 123524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org// to stdout by void functions, but it's still useful as it executes the code. 133524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 143524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org#include <fstream> 153524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org#include <string> 163524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 173524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org#include "testing/gtest/include/gtest/gtest.h" 183524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org#include "webrtc/test/testsupport/fileutils.h" 193524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org#include "webrtc/tools/frame_analyzer/video_quality_analysis.h" 203524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 213524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.orgnamespace webrtc { 223524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.orgnamespace test { 233524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 24f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org// Setup a log file to write the output to instead of stdout because we don't 25f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org// want those numbers to be picked up as perf numbers. 26f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgclass VideoQualityAnalysisTest : public ::testing::Test { 27f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org protected: 28f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org static void SetUpTestCase() { 29f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org std::string log_filename = webrtc::test::OutputPath() + 30f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org "VideoQualityAnalysisTest.log"; 31f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org logfile_ = fopen(log_filename.c_str(), "w"); 32f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org ASSERT_TRUE(logfile_ != NULL); 33f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org } 34f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org static void TearDownTestCase() { 35f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org ASSERT_EQ(0, fclose(logfile_)); 36f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org } 37f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org static FILE* logfile_; 38f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org}; 39f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgFILE* VideoQualityAnalysisTest::logfile_ = NULL; 403524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 41f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsEmpty) { 423524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org ResultsContainer result; 43f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintAnalysisResults(logfile_, "Empty", &result); 443524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 453524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 46f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsOneFrame) { 473524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org ResultsContainer result; 483524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org result.frames.push_back(AnalysisResult(0, 35.0, 0.9)); 49f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintAnalysisResults(logfile_, "OneFrame", &result); 503524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 513524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 52f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, PrintAnalysisResultsThreeFrames) { 533524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org ResultsContainer result; 543524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org result.frames.push_back(AnalysisResult(0, 35.0, 0.9)); 553524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org result.frames.push_back(AnalysisResult(1, 34.0, 0.8)); 563524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org result.frames.push_back(AnalysisResult(2, 33.0, 0.7)); 57f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintAnalysisResults(logfile_, "ThreeFrames", &result); 583524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 593524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 60f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesInvalidFile) { 613524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org std::string stats_filename = OutputPath() + "non-existing-stats-file.txt"; 623524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org remove(stats_filename.c_str()); 63f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintMaxRepeatedAndSkippedFrames(logfile_, "NonExistingStatsFile", 64f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org stats_filename); 653524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 663524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 67f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, 68f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintMaxRepeatedAndSkippedFramesEmptyStatsFile) { 693524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org std::string stats_filename = OutputPath() + "empty-stats.txt"; 703524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org std::ofstream stats_file; 713524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file.open(stats_filename.c_str()); 723524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file.close(); 73f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintMaxRepeatedAndSkippedFrames(logfile_, "EmptyStatsFile", stats_filename); 743524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 753524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 76f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.orgTEST_F(VideoQualityAnalysisTest, PrintMaxRepeatedAndSkippedFramesNormalFile) { 773524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org std::string stats_filename = OutputPath() + "stats.txt"; 783524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org std::ofstream stats_file; 793524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file.open(stats_filename.c_str()); 803524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file << "frame_0001 0100\n"; 813524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file << "frame_0002 0101\n"; 823524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file << "frame_0003 0101\n"; 833524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file << "frame_0004 0106\n"; 843524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org stats_file.close(); 853524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 86f8a17981af6b34af256873bb090f264ecaf977d0kjellander@webrtc.org PrintMaxRepeatedAndSkippedFrames(logfile_, "NormalStatsFile", stats_filename); 873524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} 883524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 893524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org 903524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} // namespace test 913524adea7db77f23c959a87847fd318a55986aa8kjellander@webrtc.org} // namespace webrtc 92