Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc

Issue 1235433005: Add pcap support to bwe tools. Allow filtering on SSRCs. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: . Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
diff --git a/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc b/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
index d424919f7afad373b08f94fedb55da893cf19512..7728873db8128c2c35b442d593378570e305d571 100644
--- a/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
+++ b/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.cc
@@ -10,9 +10,11 @@
#include "webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.h"
+#include <sstream>
#include <stdio.h>
#include <string>
+#include "gflags/gflags.h"
#include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h"
#include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h"
#include "webrtc/modules/rtp_rtcp/interface/rtp_header_parser.h"
@@ -21,6 +23,49 @@
const int kMinBitrateBps = 30000;
+namespace flags {
+
+DEFINE_string(extension_type,
+ "abs",
+ "Extension type, either abs for absolute send time or tsoffset "
+ "for timestamp offset.");
+std::string ExtensionType() {
+ return static_cast<std::string>(FLAGS_extension_type);
+}
+
+DEFINE_int32(extension_id, 3, "Extension id.");
+int ExtensionId() {
+ return static_cast<int>(FLAGS_extension_id);
+}
+
+DEFINE_string(input_file, "", "Input file.");
+std::string InputFile() {
+ return static_cast<std::string>(FLAGS_input_file);
+}
+
+DEFINE_string(ssrc_filter,
+ "",
+ "Comma-separated list of SSRCs in hexadecimal which are to be "
+ "used as input to the BWE (only applicable to pcap files).");
+std::set<uint32_t> SsrcFilter() {
+ std::string ssrc_filter_string = static_cast<std::string>(FLAGS_ssrc_filter);
+ if (ssrc_filter_string.empty())
+ return std::set<uint32_t>();
+ std::stringstream ss;
+ std::string ssrc_filter = ssrc_filter_string;
+ std::set<uint32_t> ssrcs;
+
+ // Parse the ssrcs in hexadecimal format.
+ ss << std::hex << ssrc_filter;
+ uint32_t ssrc;
+ while (ss >> ssrc) {
+ ssrcs.insert(ssrc);
+ ss.ignore(1, ',');
+ }
+ return ssrcs;
+}
+} // namespace flags
+
bool ParseArgsAndSetupEstimator(int argc,
char** argv,
webrtc::Clock* clock,
@@ -29,26 +74,45 @@ bool ParseArgsAndSetupEstimator(int argc,
webrtc::RtpHeaderParser** parser,
webrtc::RemoteBitrateEstimator** estimator,
std::string* estimator_used) {
- *rtp_reader = webrtc::test::RtpFileReader::Create(
- webrtc::test::RtpFileReader::kRtpDump, argv[3]);
+ google::ParseCommandLineFlags(&argc, &argv, true);
+ std::string filename = flags::InputFile();
+
+ std::set<uint32_t> ssrc_filter = flags::SsrcFilter();
+ fprintf(stderr, "Filter on SSRC: ");
+ for (auto& s : ssrc_filter) {
+ fprintf(stderr, "0x%08x, ", s);
+ }
+ fprintf(stderr, "\n");
+ if (filename.substr(filename.find_last_of(".")) == ".pcap") {
+ fprintf(stderr, "Opening as pcap\n");
+ *rtp_reader = webrtc::test::RtpFileReader::Create(
+ webrtc::test::RtpFileReader::kPcap, filename.c_str(),
+ flags::SsrcFilter());
+ } else {
+ fprintf(stderr, "Opening as rtp\n");
+ *rtp_reader = webrtc::test::RtpFileReader::Create(
+ webrtc::test::RtpFileReader::kRtpDump, filename.c_str());
+ }
if (!*rtp_reader) {
- fprintf(stderr, "Cannot open input file %s\n", argv[3]);
+ fprintf(stderr, "Cannot open input file %s\n", filename.c_str());
return false;
}
- fprintf(stderr, "Input file: %s\n\n", argv[3]);
- webrtc::RTPExtensionType extension = webrtc::kRtpExtensionAbsoluteSendTime;
+ fprintf(stderr, "Input file: %s\n\n", filename.c_str());
- if (strncmp("tsoffset", argv[1], 8) == 0) {
+ webrtc::RTPExtensionType extension = webrtc::kRtpExtensionAbsoluteSendTime;
+ if (flags::ExtensionType() == "tsoffset") {
extension = webrtc::kRtpExtensionTransmissionTimeOffset;
fprintf(stderr, "Extension: toffset\n");
- } else {
+ } else if (flags::ExtensionType() == "abs") {
fprintf(stderr, "Extension: abs\n");
+ } else {
+ fprintf(stderr, "Unknown extension type\n");
+ return false;
}
- int id = atoi(argv[2]);
// Setup the RTP header parser and the bitrate estimator.
*parser = webrtc::RtpHeaderParser::Create();
- (*parser)->RegisterRtpHeaderExtension(extension, id);
+ (*parser)->RegisterRtpHeaderExtension(extension, flags::ExtensionId());
if (estimator) {
switch (extension) {
case webrtc::kRtpExtensionAbsoluteSendTime: {

Powered by Google App Engine
This is Rietveld 408576698