Index: webrtc/video/replay.cc |
diff --git a/webrtc/video/replay.cc b/webrtc/video/replay.cc |
index e23ff2920fae4c3e49e44a6a99dd8a367cdcc36c..5a391d69b0da87241e5bf1ccd34c547f53dfe90a 100644 |
--- a/webrtc/video/replay.cc |
+++ b/webrtc/video/replay.cc |
@@ -14,13 +14,14 @@ |
#include <memory> |
#include <sstream> |
-#include "gflags/gflags.h" |
#include "webrtc/api/video_codecs/video_decoder.h" |
#include "webrtc/call/call.h" |
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
#include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" |
#include "webrtc/rtc_base/checks.h" |
+#include "webrtc/rtc_base/flags.h" |
+#include "webrtc/rtc_base/string_to_number.h" |
#include "webrtc/system_wrappers/include/clock.h" |
#include "webrtc/system_wrappers/include/sleep.h" |
#include "webrtc/test/call_test.h" |
@@ -36,121 +37,113 @@ |
#include "webrtc/test/video_renderer.h" |
#include "webrtc/typedefs.h" |
+namespace { |
+ |
+static bool ValidatePayloadType(int32_t payload_type) { |
+ return payload_type > 0 && payload_type <= 127; |
+} |
+ |
+static bool ValidateSsrc(const char* ssrc_string) { |
+ return rtc::StringToNumber<uint32_t>(ssrc_string).has_value(); |
+} |
+ |
+static bool ValidateOptionalPayloadType(int32_t payload_type) { |
+ return payload_type == -1 || ValidatePayloadType(payload_type); |
+} |
+ |
+static bool ValidateRtpHeaderExtensionId(int32_t extension_id) { |
+ return extension_id >= -1 && extension_id < 15; |
+} |
+ |
+bool ValidateInputFilenameNotEmpty(const std::string& string) { |
+ return !string.empty(); |
+} |
+ |
+} // namespace |
+ |
namespace webrtc { |
namespace flags { |
// TODO(pbos): Multiple receivers. |
// Flag for payload type. |
-static bool ValidatePayloadType(const char* flagname, int32_t payload_type) { |
- return payload_type > 0 && payload_type <= 127; |
-} |
-DEFINE_int32(payload_type, test::CallTest::kPayloadTypeVP8, "Payload type"); |
-static int PayloadType() { return static_cast<int>(FLAGS_payload_type); } |
-static const bool payload_dummy = |
- google::RegisterFlagValidator(&FLAGS_payload_type, &ValidatePayloadType); |
- |
-DEFINE_int32(payload_type_rtx, |
- test::CallTest::kSendRtxPayloadType, |
- "RTX payload type"); |
+DEFINE_int(payload_type, test::CallTest::kPayloadTypeVP8, "Payload type"); |
+static int PayloadType() { return static_cast<int>(FLAG_payload_type); } |
+ |
+DEFINE_int(payload_type_rtx, |
+ test::CallTest::kSendRtxPayloadType, |
+ "RTX payload type"); |
static int PayloadTypeRtx() { |
- return static_cast<int>(FLAGS_payload_type_rtx); |
+ return static_cast<int>(FLAG_payload_type_rtx); |
} |
-static const bool payload_rtx_dummy = |
- google::RegisterFlagValidator(&FLAGS_payload_type_rtx, |
- &ValidatePayloadType); |
// Flag for SSRC. |
-static bool ValidateSsrc(const char* flagname, uint64_t ssrc) { |
- return ssrc > 0 && ssrc <= 0xFFFFFFFFu; |
+const std::string& DefaultSsrc() { |
+ static const std::string ssrc = std::to_string( |
+ test::CallTest::kVideoSendSsrcs[0]); |
+ return ssrc; |
} |
- |
-DEFINE_uint64(ssrc, test::CallTest::kVideoSendSsrcs[0], "Incoming SSRC"); |
-static uint32_t Ssrc() { return static_cast<uint32_t>(FLAGS_ssrc); } |
-static const bool ssrc_dummy = |
- google::RegisterFlagValidator(&FLAGS_ssrc, &ValidateSsrc); |
- |
-DEFINE_uint64(ssrc_rtx, test::CallTest::kSendRtxSsrcs[0], "Incoming RTX SSRC"); |
-static uint32_t SsrcRtx() { |
- return static_cast<uint32_t>(FLAGS_ssrc_rtx); |
+DEFINE_string(ssrc, DefaultSsrc().c_str(), "Incoming SSRC"); |
+static uint32_t Ssrc() { |
+ return rtc::StringToNumber<uint32_t>(FLAG_ssrc).value(); |
} |
-static const bool ssrc_rtx_dummy = |
- google::RegisterFlagValidator(&FLAGS_ssrc_rtx, &ValidateSsrc); |
-static bool ValidateOptionalPayloadType(const char* flagname, |
- int32_t payload_type) { |
- return payload_type == -1 || ValidatePayloadType(flagname, payload_type); |
+const std::string& DefaultSsrcRtx() { |
+ static const std::string ssrc_rtx = std::to_string( |
+ test::CallTest::kSendRtxSsrcs[0]); |
+ return ssrc_rtx; |
+} |
+DEFINE_string(ssrc_rtx, DefaultSsrcRtx().c_str(), "Incoming RTX SSRC"); |
+static uint32_t SsrcRtx() { |
+ return rtc::StringToNumber<uint32_t>(FLAG_ssrc_rtx).value(); |
} |
// Flag for RED payload type. |
-DEFINE_int32(red_payload_type, -1, "RED payload type"); |
+DEFINE_int(red_payload_type, -1, "RED payload type"); |
static int RedPayloadType() { |
- return static_cast<int>(FLAGS_red_payload_type); |
+ return static_cast<int>(FLAG_red_payload_type); |
} |
-static const bool red_dummy = |
- google::RegisterFlagValidator(&FLAGS_red_payload_type, |
- &ValidateOptionalPayloadType); |
// Flag for ULPFEC payload type. |
-DEFINE_int32(fec_payload_type, -1, "ULPFEC payload type"); |
+DEFINE_int(fec_payload_type, -1, "ULPFEC payload type"); |
static int FecPayloadType() { |
- return static_cast<int>(FLAGS_fec_payload_type); |
+ return static_cast<int>(FLAG_fec_payload_type); |
} |
-static const bool fec_dummy = |
- google::RegisterFlagValidator(&FLAGS_fec_payload_type, |
- &ValidateOptionalPayloadType); |
// Flag for abs-send-time id. |
-static bool ValidateRtpHeaderExtensionId(const char* flagname, |
- int32_t extension_id) { |
- return extension_id >= -1 || extension_id < 15; |
-} |
-DEFINE_int32(abs_send_time_id, -1, "RTP extension ID for abs-send-time"); |
-static int AbsSendTimeId() { return static_cast<int>(FLAGS_abs_send_time_id); } |
-static const bool abs_send_time_dummy = |
- google::RegisterFlagValidator(&FLAGS_abs_send_time_id, |
- &ValidateRtpHeaderExtensionId); |
+DEFINE_int(abs_send_time_id, -1, "RTP extension ID for abs-send-time"); |
+static int AbsSendTimeId() { return static_cast<int>(FLAG_abs_send_time_id); } |
// Flag for transmission-offset id. |
-DEFINE_int32(transmission_offset_id, |
- -1, |
- "RTP extension ID for transmission-offset"); |
+DEFINE_int(transmission_offset_id, |
+ -1, |
+ "RTP extension ID for transmission-offset"); |
static int TransmissionOffsetId() { |
- return static_cast<int>(FLAGS_transmission_offset_id); |
+ return static_cast<int>(FLAG_transmission_offset_id); |
} |
-static const bool timestamp_offset_dummy = |
- google::RegisterFlagValidator(&FLAGS_transmission_offset_id, |
- &ValidateRtpHeaderExtensionId); |
// Flag for rtpdump input file. |
-bool ValidateInputFilenameNotEmpty(const char* flagname, |
- const std::string& string) { |
- return !string.empty(); |
-} |
- |
DEFINE_string(input_file, "", "input file"); |
static std::string InputFile() { |
- return static_cast<std::string>(FLAGS_input_file); |
+ return static_cast<std::string>(FLAG_input_file); |
} |
-static const bool input_file_dummy = |
- google::RegisterFlagValidator(&FLAGS_input_file, |
- &ValidateInputFilenameNotEmpty); |
// Flag for raw output files. |
DEFINE_string(out_base, "", "Basename (excluding .jpg) for raw output"); |
static std::string OutBase() { |
- return static_cast<std::string>(FLAGS_out_base); |
+ return static_cast<std::string>(FLAG_out_base); |
} |
DEFINE_string(decoder_bitstream_filename, "", "Decoder bitstream output file"); |
static std::string DecoderBitstreamFilename() { |
- return static_cast<std::string>(FLAGS_decoder_bitstream_filename); |
+ return static_cast<std::string>(FLAG_decoder_bitstream_filename); |
} |
// Flag for video codec. |
DEFINE_string(codec, "VP8", "Video codec"); |
-static std::string Codec() { return static_cast<std::string>(FLAGS_codec); } |
+static std::string Codec() { return static_cast<std::string>(FLAG_codec); } |
+DEFINE_bool(help, false, "Print this message."); |
} // namespace flags |
static const uint32_t kReceiverLocalSsrc = 0x123456; |
@@ -330,7 +323,24 @@ void RtpReplay() { |
int main(int argc, char* argv[]) { |
::testing::InitGoogleTest(&argc, argv); |
- google::ParseCommandLineFlags(&argc, &argv, true); |
+ if (rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true)) { |
+ return 1; |
+ } |
+ if (webrtc::flags::FLAG_help) { |
+ rtc::FlagList::Print(nullptr, false); |
+ return 0; |
+ } |
+ |
+ RTC_CHECK(ValidatePayloadType(webrtc::flags::FLAG_payload_type)); |
+ RTC_CHECK(ValidatePayloadType(webrtc::flags::FLAG_payload_type_rtx)); |
+ RTC_CHECK(ValidateSsrc(webrtc::flags::FLAG_ssrc)); |
+ RTC_CHECK(ValidateSsrc(webrtc::flags::FLAG_ssrc_rtx)); |
+ RTC_CHECK(ValidateOptionalPayloadType(webrtc::flags::FLAG_red_payload_type)); |
+ RTC_CHECK(ValidateOptionalPayloadType(webrtc::flags::FLAG_fec_payload_type)); |
+ RTC_CHECK(ValidateRtpHeaderExtensionId(webrtc::flags::FLAG_abs_send_time_id)); |
+ RTC_CHECK(ValidateRtpHeaderExtensionId( |
+ webrtc::flags::FLAG_transmission_offset_id)); |
+ RTC_CHECK(ValidateInputFilenameNotEmpty(webrtc::flags::FLAG_input_file)); |
webrtc::test::RunTest(webrtc::RtpReplay); |
return 0; |