diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index e3b9eb11e4..9df3843ed5 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -242,6 +242,7 @@ if (!build_with_chromium) { rtc_executable("rgba_to_i420_converter") { visibility = [ "*" ] + testonly = true sources = [ "converter/converter.cc", "converter/converter.h", @@ -249,8 +250,9 @@ if (!build_with_chromium) { ] deps = [ - ":command_line_parser", "../common_video", + "//third_party/abseil-cpp/absl/flags:flag", + "//third_party/abseil-cpp/absl/flags:parse", "//third_party/libyuv", ] } diff --git a/rtc_tools/converter/rgba_to_i420_converter.cc b/rtc_tools/converter/rgba_to_i420_converter.cc index 89fbf95154..cf352e6ae6 100644 --- a/rtc_tools/converter/rgba_to_i420_converter.cc +++ b/rtc_tools/converter/rgba_to_i420_converter.cc @@ -12,8 +12,24 @@ #include #include +#include "absl/flags/flag.h" +#include "absl/flags/parse.h" #include "rtc_tools/converter/converter.h" -#include "rtc_tools/simple_command_line_parser.h" + +ABSL_FLAG(int, width, -1, "Width in pixels of the frames in the input file"); +ABSL_FLAG(int, height, -1, "Height in pixels of the frames in the input file"); +ABSL_FLAG(std::string, + frames_dir, + ".", + "The path to the directory where the frames reside"); +ABSL_FLAG(std::string, + output_file, + "output.yuv", + " The output file to which frames are written"); +ABSL_FLAG(bool, + delete_frames, + false, + " Whether or not to delete the input frames after the conversion"); /* * A command-line tool based on libyuv to convert a set of RGBA files to a YUV @@ -24,60 +40,39 @@ * --height= */ int main(int argc, char* argv[]) { - std::string program_name = argv[0]; - std::string usage = - "Converts RGBA raw image files to I420 frames for YUV.\n" - "Example usage:\n" + - program_name + - " --frames_dir=. --output_file=output.yuv --width=320 --height=240\n" - "IMPORTANT: If you pass the --delete_frames command line parameter, the " - "tool will delete the input frames after conversion.\n" - "Command line flags:\n" - " - width(int): Width in pixels of the frames in the input file." - " Default: -1\n" - " - height(int): Height in pixels of the frames in the input file." - " Default: -1\n" - " - frames_dir(string): The path to the directory where the frames " - "reside." - " Default: .\n" - " - output_file(string): The output file to which frames are written." - " Default: output.yuv\n" - " - delete_frames(bool): Whether or not to delete the input frames after" - " the conversion. Default: false.\n"; + absl::ParseCommandLine(argc, argv); + // TODO(bugs.webrtc.org/10616): Add program usage message when Abseil + // flags supports it. + // std::string usage = + // "Converts RGBA raw image files to I420 frames for YUV.\n" + // "Example usage:\n" + + // program_name + + // " --frames_dir=. --output_file=output.yuv --width=320 --height=240\n" + // "IMPORTANT: If you pass the --delete_frames command line parameter, the + // " "tool will delete the input frames after conversion.\n" "Command line + // flags:\n" " - width(int): Width in pixels of the frames in the input + // file." " Default: -1\n" " - height(int): Height in pixels of the + // frames in the input file." " Default: -1\n" " - frames_dir(string): + // The path to the directory where the frames " "reside." " Default: .\n" + // " - output_file(string): The output file to which frames are written." + // " Default: output.yuv\n" + // " - delete_frames(bool): Whether or not to delete the input frames + // after" " the conversion. Default: false.\n"; - webrtc::test::CommandLineParser parser; - - // Init the parser and set the usage message - parser.Init(argc, argv); - parser.SetUsageMessage(usage); - - parser.SetFlag("width", "-1"); - parser.SetFlag("height", "-1"); - parser.SetFlag("frames_dir", "."); - parser.SetFlag("output_file", "output.yuv"); - parser.SetFlag("delete_frames", "false"); - parser.SetFlag("help", "false"); - - parser.ProcessFlags(); - if (parser.GetFlag("help") == "true") { - parser.PrintUsageMessage(); - exit(EXIT_SUCCESS); - } - parser.PrintEnteredFlags(); - - int width = strtol((parser.GetFlag("width")).c_str(), NULL, 10); - int height = strtol((parser.GetFlag("height")).c_str(), NULL, 10); + int width = absl::GetFlag(FLAGS_width); + int height = absl::GetFlag(FLAGS_height); if (width <= 0 || height <= 0) { fprintf(stderr, "Error: width or height cannot be <= 0!\n"); return -1; } - bool del_frames = (parser.GetFlag("delete_frames") == "true") ? true : false; + bool del_frames = absl::GetFlag(FLAGS_delete_frames); webrtc::test::Converter converter(width, height); bool success = converter.ConvertRGBAToI420Video( - parser.GetFlag("frames_dir"), parser.GetFlag("output_file"), del_frames); + absl::GetFlag(FLAGS_frames_dir), absl::GetFlag(FLAGS_output_file), + del_frames); if (success) { fprintf(stdout, "Successful conversion of RGBA frames to YUV video!\n");