diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index 9df3843ed5..ffade278e3 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -200,17 +200,19 @@ if (!build_with_chromium) { } rtc_executable("psnr_ssim_analyzer") { + testonly = true sources = [ "psnr_ssim_analyzer/psnr_ssim_analyzer.cc", ] deps = [ - ":command_line_parser", ":video_file_reader", ":video_quality_analysis", "../api:scoped_refptr", "../api/video:video_frame", "../api/video:video_rtp_headers", + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", ] } diff --git a/rtc_tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc b/rtc_tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc index ca97161652..05180c2968 100644 --- a/rtc_tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc +++ b/rtc_tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc @@ -13,12 +13,26 @@ #include #include +#include "absl/flags/flag.h" +#include "absl/flags/parse.h" #include "api/scoped_refptr.h" #include "api/video/video_frame_buffer.h" #include "rtc_tools/frame_analyzer/video_quality_analysis.h" -#include "rtc_tools/simple_command_line_parser.h" #include "rtc_tools/video_file_reader.h" +ABSL_FLAG(std::string, + results_file, + "results.txt", + "The full name of the file where the results will be written"); +ABSL_FLAG(std::string, + reference_file, + "ref.yuv", + "The reference YUV file to compare against"); +ABSL_FLAG(std::string, + test_file, + "test.yuv", + "The test YUV file to run the analysis for"); + void CompareFiles( const rtc::scoped_refptr& reference_video, const rtc::scoped_refptr& test_video, @@ -59,45 +73,27 @@ void CompareFiles( * --results_file= */ int main(int argc, char* argv[]) { - std::string program_name = argv[0]; - std::string usage = - "Runs PSNR and SSIM on two I420 videos and write the" - "results in a file.\n" - "Example usage:\n" + - program_name + - " --reference_file=ref.yuv " - "--test_file=test.yuv --results_file=results.txt\n" - "Command line flags:\n" - " - reference_file(string): The reference YUV file to compare against." - " Default: ref.yuv\n" - " - test_file(string): The test YUV file to run the analysis for." - " Default: test_file.yuv\n" - " - results_file(string): The full name of the file where the results " - "will be written. Default: results.txt\n"; - - webrtc::test::CommandLineParser parser; - - // Init the parser and set the usage message - parser.Init(argc, argv); - parser.SetUsageMessage(usage); - - parser.SetFlag("results_file", "results.txt"); - parser.SetFlag("reference_file", "ref.yuv"); - parser.SetFlag("test_file", "test.yuv"); - parser.SetFlag("results_file", "results.txt"); - parser.SetFlag("help", "false"); - - parser.ProcessFlags(); - if (parser.GetFlag("help") == "true") { - parser.PrintUsageMessage(); - exit(EXIT_SUCCESS); - } - parser.PrintEnteredFlags(); + absl::ParseCommandLine(argc, argv); + // TODO(bugs.webrtc.org/10616): Add program usage message when Abseil + // flags supports it. + // std::string usage = + // "Runs PSNR and SSIM on two I420 videos and write the" + // "results in a file.\n" + // "Example usage:\n" + + // program_name + + // " --reference_file=ref.yuv " + // "--test_file=test.yuv --results_file=results.txt\n" + // "Command line flags:\n" + // " - reference_file(string): The reference YUV file to compare + // against." " Default: ref.yuv\n" " - test_file(string): The test YUV + // file to run the analysis for." " Default: test_file.yuv\n" " - + // results_file(string): The full name of the file where the results " + // "will be written. Default: results.txt\n"; rtc::scoped_refptr reference_video = - webrtc::test::OpenY4mFile(parser.GetFlag("reference_file")); + webrtc::test::OpenY4mFile(absl::GetFlag(FLAGS_reference_file)); rtc::scoped_refptr test_video = - webrtc::test::OpenY4mFile(parser.GetFlag("test_file")); + webrtc::test::OpenY4mFile(absl::GetFlag(FLAGS_test_file)); if (!reference_video || !test_video) { fprintf(stderr, "Error opening video files\n"); @@ -114,6 +110,6 @@ int main(int argc, char* argv[]) { } CompareFiles(reference_video, test_video, - parser.GetFlag("results_file").c_str()); + absl::GetFlag(FLAGS_results_file).c_str()); return 0; }