Index: chrome/browser/media/chrome_webrtc_video_quality_browsertest.cc |
diff --git a/chrome/browser/media/chrome_webrtc_video_quality_browsertest.cc b/chrome/browser/media/chrome_webrtc_video_quality_browsertest.cc |
index c749b9cc009b5f761e0c93001227eaea6846599c..c9bf47c86c20bfed4235d202a9190a51c13a0292 100644 |
--- a/chrome/browser/media/chrome_webrtc_video_quality_browsertest.cc |
+++ b/chrome/browser/media/chrome_webrtc_video_quality_browsertest.cc |
@@ -264,13 +264,12 @@ class WebrtcVideoQualityBrowserTest : public WebRtcTestBase { |
// into every frame of the video (produced by rgba_to_i420_converter). It |
// produces a set of PNG images and a |stats_file| that maps each captured |
// frame to a frame in the reference video. The frames should be of size |
- // |width| x |height|. The output of compare_videos.py is returned. |
+ // |width| x |height|. |
phoglund_chromium
2013/09/12 07:32:10
Add a comment which describes how the output gets
kjellander_chromium
2013/09/12 09:02:36
I agree with both, updated.
|
bool CompareVideos(int width, |
int height, |
const base::FilePath& captured_video_filename, |
const base::FilePath& reference_video_filename, |
- const base::FilePath& stats_file, |
- std::string* result) { |
+ const base::FilePath& stats_file) { |
base::FilePath path_to_analyzer = base::MakeAbsoluteFilePath( |
GetBrowserDir().Append(kFrameAnalyzerExecutable)); |
@@ -294,6 +293,7 @@ class WebrtcVideoQualityBrowserTest : public WebRtcTestBase { |
EXPECT_TRUE(GetPythonCommand(&compare_command)); |
compare_command.AppendArgPath(path_to_compare_script); |
+ compare_command.AppendArg("--label=VGA"); |
kjellander_chromium
2013/09/11 15:30:58
This is a new argument for the script, preparing f
|
compare_command.AppendArg("--ref_video"); |
compare_command.AppendArgPath(reference_video_filename); |
compare_command.AppendArg("--test_video"); |
@@ -308,89 +308,12 @@ class WebrtcVideoQualityBrowserTest : public WebRtcTestBase { |
compare_command.AppendArgPath(stats_file); |
LOG(INFO) << "Running " << compare_command.GetCommandLineString(); |
- bool ok = base::GetAppOutput(compare_command, result); |
- LOG(INFO) << "Output was:\n\n" << *result; |
+ std::string output; |
+ bool ok = base::GetAppOutput(compare_command, &output); |
+ LOG(INFO) << "Output was:\n\n" << output; |
phoglund_chromium
2013/09/12 07:32:10
Ok, so this LOG(INFO) is what really prints the ou
kjellander_chromium
2013/09/12 09:02:36
Right, there's a ton of other stuff printed before
|
return ok; |
} |
- // Processes the |frame_analyzer_output| for the different frame counts. |
- // |
- // The frame analyzer outputs additional information about the number of |
- // unique frames captured, The max number of repeated frames in a sequence and |
- // the max number of skipped frames. These values are then written to the Perf |
- // Graph. (Note: Some of the repeated or skipped frames will probably be due |
- // to the imperfection of JavaScript timers). |
- void PrintFramesCountPerfResults(std::string frame_analyzer_output) { |
- size_t unique_frames_pos = |
- frame_analyzer_output.rfind("Unique_frames_count"); |
- EXPECT_NE(unique_frames_pos, std::string::npos) |
- << "Missing Unique_frames_count in frame analyzer output:\n" |
- << frame_analyzer_output; |
- |
- std::string unique_frame_counts = |
- frame_analyzer_output.substr(unique_frames_pos); |
- // TODO(phoglund): Fix ESTATS result to not have this silly newline. |
- std::replace( |
- unique_frame_counts.begin(), unique_frame_counts.end(), '\n', ' '); |
- |
- std::vector<std::pair<std::string, std::string> > key_values; |
- base::SplitStringIntoKeyValuePairs( |
- unique_frame_counts, ':', ' ', &key_values); |
- std::vector<std::pair<std::string, std::string> >::const_iterator iter; |
- for (iter = key_values.begin(); iter != key_values.end(); ++iter) { |
- const std::pair<std::string, std::string>& key_value = *iter; |
- perf_test::PrintResult( |
- key_value.first, "", "VGA", key_value.second, "", false); |
- } |
- } |
- |
- // Processes the |frame_analyzer_output| to extract the PSNR and SSIM values. |
- // |
- // The frame analyzer produces PSNR and SSIM results for every unique frame |
- // that has been captured. This method forms a list of all the psnr and ssim |
- // values and passes it to PrintResultList() for printing on the Perf Graph. |
- void PrintPsnrAndSsimPerfResults(std::string frame_analyzer_output) { |
- size_t stats_start = frame_analyzer_output.find("BSTATS"); |
- EXPECT_NE(stats_start, std::string::npos) |
- << "Missing BSTATS in frame analyzer output:\n" |
- << frame_analyzer_output; |
- size_t stats_end = frame_analyzer_output.find("ESTATS"); |
- EXPECT_NE(stats_end, std::string::npos) |
- << "Missing ESTATS in frame analyzer output:\n" |
- << frame_analyzer_output; |
- |
- stats_start += std::string("BSTATS").size(); |
- std::string psnr_ssim_stats = |
- frame_analyzer_output.substr(stats_start, stats_end - stats_start); |
- |
- // PSNR and SSIM values aren't really key-value pairs but it is convenient |
- // to parse them as such. |
- // TODO(phoglund): make the format more convenient so we need less |
- // processing here. |
- std::vector<std::pair<std::string, std::string> > psnr_ssim_entries; |
- base::SplitStringIntoKeyValuePairs( |
- psnr_ssim_stats, ' ', ';', &psnr_ssim_entries); |
- |
- std::string psnr_value_list; |
- std::string ssim_value_list; |
- std::vector<std::pair<std::string, std::string> >::const_iterator iter; |
- for (iter = psnr_ssim_entries.begin(); iter != psnr_ssim_entries.end(); |
- ++iter) { |
- const std::pair<std::string, std::string>& psnr_and_ssim = *iter; |
- psnr_value_list.append(psnr_and_ssim.first).append(","); |
- ssim_value_list.append(psnr_and_ssim.second).append(","); |
- } |
- |
- // Nuke last comma. |
- ASSERT_GT(psnr_value_list.size(), 0u) << "Received no valid PSNR values."; |
- ASSERT_GT(ssim_value_list.size(), 0u) << "Received no valid SSIM values."; |
- psnr_value_list.erase(psnr_value_list.size() - 1); |
- ssim_value_list.erase(ssim_value_list.size() - 1); |
- |
- perf_test::PrintResultList("PSNR", "", "VGA", psnr_value_list, "dB", false); |
- perf_test::PrintResultList("SSIM", "", "VGA", ssim_value_list, "", false); |
- } |
- |
base::FilePath GetWorkingDir() { |
std::string home_dir; |
environment_->GetVar(kHomeEnvName, &home_dir); |
@@ -467,17 +390,12 @@ IN_PROC_BROWSER_TEST_F(WebrtcVideoQualityBrowserTest, |
RunARGBtoI420Converter( |
kVgaWidth, kVgaHeight, GetWorkingDir().Append(kCapturedYuvFileName)); |
- std::string output; |
ASSERT_TRUE( |
CompareVideos(kVgaWidth, |
kVgaHeight, |
GetWorkingDir().Append(kCapturedYuvFileName), |
GetWorkingDir().Append(kReferenceYuvFileName), |
- GetWorkingDir().Append(kStatsFileName), |
- &output)); |
- |
- PrintFramesCountPerfResults(output); |
- PrintPsnrAndSsimPerfResults(output); |
+ GetWorkingDir().Append(kStatsFileName))); |
ASSERT_TRUE(peerconnection_server_.Stop()); |
ASSERT_TRUE(ShutdownPyWebSocketServer()); |