| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/base64.h" | 5 #include "base/base64.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/environment.h" | 7 #include "base/environment.h" |
| 8 #include "base/files/file.h" | 8 #include "base/files/file.h" |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 | 150 |
| 151 // Runs the RGBA to I420 converter on the video in |capture_video_filename|, | 151 // Runs the RGBA to I420 converter on the video in |capture_video_filename|, |
| 152 // which should contain frames of size |width| x |height|. | 152 // which should contain frames of size |width| x |height|. |
| 153 // | 153 // |
| 154 // The rgba_to_i420_converter is part of the webrtc_test_tools target which | 154 // The rgba_to_i420_converter is part of the webrtc_test_tools target which |
| 155 // should be build prior to running this test. The resulting binary should | 155 // should be build prior to running this test. The resulting binary should |
| 156 // live next to Chrome. | 156 // live next to Chrome. |
| 157 bool RunARGBtoI420Converter(int width, | 157 bool RunARGBtoI420Converter(int width, |
| 158 int height, | 158 int height, |
| 159 const base::FilePath& captured_video_filename) { | 159 const base::FilePath& captured_video_filename) { |
| 160 base::FilePath path_to_converter = base::MakeAbsoluteFilePath( | 160 base::FilePath path_to_converter = |
| 161 GetBrowserDir().Append(kArgbToI420ConverterExecutable)); | 161 GetBrowserDir().Append(kArgbToI420ConverterExecutable); |
| 162 | 162 |
| 163 if (!base::PathExists(path_to_converter)) { | 163 if (!base::PathExists(path_to_converter)) { |
| 164 LOG(ERROR) << "Missing ARGB->I420 converter: should be in " | 164 LOG(ERROR) << "Missing ARGB->I420 converter: should be in " |
| 165 << path_to_converter.value(); | 165 << path_to_converter.value() |
| 166 << ". Try building the chromium_builder_webrtc target."; |
| 166 return false; | 167 return false; |
| 167 } | 168 } |
| 168 | 169 |
| 169 base::CommandLine converter_command(path_to_converter); | 170 base::CommandLine converter_command(path_to_converter); |
| 170 converter_command.AppendSwitchPath("--frames_dir", GetWorkingDir()); | 171 converter_command.AppendSwitchPath("--frames_dir", GetWorkingDir()); |
| 171 converter_command.AppendSwitchPath("--output_file", | 172 converter_command.AppendSwitchPath("--output_file", |
| 172 captured_video_filename); | 173 captured_video_filename); |
| 173 converter_command.AppendSwitchASCII("--width", | 174 converter_command.AppendSwitchASCII("--width", |
| 174 base::StringPrintf("%d", width)); | 175 base::StringPrintf("%d", width)); |
| 175 converter_command.AppendSwitchASCII("--height", | 176 converter_command.AppendSwitchASCII("--height", |
| (...skipping 25 matching lines...) Expand all Loading... |
| 201 const base::FilePath& reference_video_filename, | 202 const base::FilePath& reference_video_filename, |
| 202 const base::FilePath& stats_file) { | 203 const base::FilePath& stats_file) { |
| 203 | 204 |
| 204 base::FilePath path_to_analyzer = base::MakeAbsoluteFilePath( | 205 base::FilePath path_to_analyzer = base::MakeAbsoluteFilePath( |
| 205 GetBrowserDir().Append(kFrameAnalyzerExecutable)); | 206 GetBrowserDir().Append(kFrameAnalyzerExecutable)); |
| 206 base::FilePath path_to_compare_script = GetSourceDir().Append( | 207 base::FilePath path_to_compare_script = GetSourceDir().Append( |
| 207 FILE_PATH_LITERAL("third_party/webrtc/tools/compare_videos.py")); | 208 FILE_PATH_LITERAL("third_party/webrtc/tools/compare_videos.py")); |
| 208 | 209 |
| 209 if (!base::PathExists(path_to_analyzer)) { | 210 if (!base::PathExists(path_to_analyzer)) { |
| 210 LOG(ERROR) << "Missing frame analyzer: should be in " | 211 LOG(ERROR) << "Missing frame analyzer: should be in " |
| 211 << path_to_analyzer.value(); | 212 << path_to_analyzer.value() |
| 213 << ". Try building the chromium_builder_webrtc target."; |
| 212 return false; | 214 return false; |
| 213 } | 215 } |
| 214 if (!base::PathExists(path_to_compare_script)) { | 216 if (!base::PathExists(path_to_compare_script)) { |
| 215 LOG(ERROR) << "Missing video compare script: should be in " | 217 LOG(ERROR) << "Missing video compare script: should be in " |
| 216 << path_to_compare_script.value(); | 218 << path_to_compare_script.value(); |
| 217 return false; | 219 return false; |
| 218 } | 220 } |
| 219 | 221 |
| 222 base::FilePath path_to_zxing = test::GetToolForPlatform("zxing"); |
| 223 if (!base::PathExists(path_to_zxing)) { |
| 224 LOG(ERROR) << "Missing zxing: should be in " << path_to_zxing.value(); |
| 225 return false; |
| 226 } |
| 227 base::FilePath path_to_ffmpeg = test::GetToolForPlatform("ffmpeg"); |
| 228 if (!base::PathExists(path_to_ffmpeg)) { |
| 229 LOG(ERROR) << "Missing ffmpeg: should be in " << path_to_ffmpeg.value(); |
| 230 return false; |
| 231 } |
| 232 |
| 220 // Note: don't append switches to this command since it will mess up the | 233 // Note: don't append switches to this command since it will mess up the |
| 221 // -u in the python invocation! | 234 // -u in the python invocation! |
| 222 base::CommandLine compare_command(base::CommandLine::NO_PROGRAM); | 235 base::CommandLine compare_command(base::CommandLine::NO_PROGRAM); |
| 223 EXPECT_TRUE(GetPythonCommand(&compare_command)); | 236 EXPECT_TRUE(GetPythonCommand(&compare_command)); |
| 224 | 237 |
| 225 compare_command.AppendArgPath(path_to_compare_script); | 238 compare_command.AppendArgPath(path_to_compare_script); |
| 226 compare_command.AppendArg(base::StringPrintf("--label=%s", test_label)); | 239 compare_command.AppendArg(base::StringPrintf("--label=%s", test_label)); |
| 227 compare_command.AppendArg("--ref_video"); | 240 compare_command.AppendArg("--ref_video"); |
| 228 compare_command.AppendArgPath(reference_video_filename); | 241 compare_command.AppendArgPath(reference_video_filename); |
| 229 compare_command.AppendArg("--test_video"); | 242 compare_command.AppendArg("--test_video"); |
| 230 compare_command.AppendArgPath(captured_video_filename); | 243 compare_command.AppendArgPath(captured_video_filename); |
| 231 compare_command.AppendArg("--frame_analyzer"); | 244 compare_command.AppendArg("--frame_analyzer"); |
| 232 compare_command.AppendArgPath(path_to_analyzer); | 245 compare_command.AppendArgPath(path_to_analyzer); |
| 233 compare_command.AppendArg("--yuv_frame_width"); | 246 compare_command.AppendArg("--yuv_frame_width"); |
| 234 compare_command.AppendArg(base::StringPrintf("%d", width)); | 247 compare_command.AppendArg(base::StringPrintf("%d", width)); |
| 235 compare_command.AppendArg("--yuv_frame_height"); | 248 compare_command.AppendArg("--yuv_frame_height"); |
| 236 compare_command.AppendArg(base::StringPrintf("%d", height)); | 249 compare_command.AppendArg(base::StringPrintf("%d", height)); |
| 250 compare_command.AppendArg("--zxing_path"); |
| 251 compare_command.AppendArgPath(path_to_zxing); |
| 252 compare_command.AppendArg("--ffmpeg_path"); |
| 253 compare_command.AppendArgPath(path_to_ffmpeg); |
| 237 compare_command.AppendArg("--stats_file"); | 254 compare_command.AppendArg("--stats_file"); |
| 238 compare_command.AppendArgPath(stats_file); | 255 compare_command.AppendArgPath(stats_file); |
| 239 | 256 |
| 240 DVLOG(0) << "Running " << compare_command.GetCommandLineString(); | 257 DVLOG(0) << "Running " << compare_command.GetCommandLineString(); |
| 241 std::string output; | 258 std::string output; |
| 242 bool ok = base::GetAppOutput(compare_command, &output); | 259 bool ok = base::GetAppOutput(compare_command, &output); |
| 243 | 260 |
| 244 // Print to stdout to ensure the perf numbers are parsed properly by the | 261 // Print to stdout to ensure the perf numbers are parsed properly by the |
| 245 // buildbot step. The tool should print a handful RESULT lines. | 262 // buildbot step. The tool should print a handful RESULT lines. |
| 246 printf("Output was:\n\n%s\n", output.c_str()); | 263 printf("Output was:\n\n%s\n", output.c_str()); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 ASSERT_TRUE(CompareVideosAndPrintResult( | 349 ASSERT_TRUE(CompareVideosAndPrintResult( |
| 333 test_config_.test_name, | 350 test_config_.test_name, |
| 334 test_config_.width, | 351 test_config_.width, |
| 335 test_config_.height, | 352 test_config_.height, |
| 336 GetWorkingDir().Append(kCapturedYuvFileName), | 353 GetWorkingDir().Append(kCapturedYuvFileName), |
| 337 test::GetReferenceFilesDir() | 354 test::GetReferenceFilesDir() |
| 338 .Append(test_config_.reference_video) | 355 .Append(test_config_.reference_video) |
| 339 .AddExtension(test::kYuvFileExtension), | 356 .AddExtension(test::kYuvFileExtension), |
| 340 GetWorkingDir().Append(kStatsFileName))); | 357 GetWorkingDir().Append(kStatsFileName))); |
| 341 } | 358 } |
| OLD | NEW |