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

Unified Diff: webrtc/test/rtp_file_reader.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
« no previous file with comments | « webrtc/test/rtp_file_reader.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/test/rtp_file_reader.cc
diff --git a/webrtc/test/rtp_file_reader.cc b/webrtc/test/rtp_file_reader.cc
index 26151bba1ff6547fea7c3a1d6625c82ad3c3ef09..c1a0bc81a24e93e8097f90b726d5f5dfba31d107 100644
--- a/webrtc/test/rtp_file_reader.cc
+++ b/webrtc/test/rtp_file_reader.cc
@@ -69,7 +69,8 @@ bool ReadUint16(uint16_t* out, FILE* file) {
class RtpFileReaderImpl : public RtpFileReader {
public:
- virtual bool Init(const std::string& filename) = 0;
+ virtual bool Init(const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) = 0;
};
class InterleavedRtpFileReader : public RtpFileReaderImpl {
@@ -81,7 +82,8 @@ class InterleavedRtpFileReader : public RtpFileReaderImpl {
}
}
- virtual bool Init(const std::string& filename) {
+ virtual bool Init(const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) {
file_ = fopen(filename.c_str(), "rb");
if (file_ == NULL) {
printf("ERROR: Can't open file: %s\n", filename.c_str());
@@ -127,7 +129,8 @@ class RtpDumpReader : public RtpFileReaderImpl {
}
}
- bool Init(const std::string& filename) {
+ bool Init(const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) {
file_ = fopen(filename.c_str(), "rb");
if (file_ == NULL) {
printf("ERROR: Can't open file: %s\n", filename.c_str());
@@ -265,11 +268,13 @@ class PcapReader : public RtpFileReaderImpl {
}
}
- bool Init(const std::string& filename) override {
- return Initialize(filename) == kResultSuccess;
+ bool Init(const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) override {
+ return Initialize(filename, ssrc_filter) == kResultSuccess;
}
- int Initialize(const std::string& filename) {
+ int Initialize(const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) {
file_ = fopen(filename.c_str(), "rb");
if (file_ == NULL) {
printf("ERROR: Can't open file: %s\n", filename.c_str());
@@ -286,7 +291,7 @@ class PcapReader : public RtpFileReaderImpl {
for (;;) {
TRY_PCAP(fseek(file_, next_packet_pos, SEEK_SET));
int result = ReadPacket(&next_packet_pos, stream_start_ms,
- ++total_packet_count);
+ ++total_packet_count, ssrc_filter);
if (result == kResultFail) {
break;
} else if (result == kResultSuccess && packets_.size() == 1) {
@@ -308,10 +313,10 @@ class PcapReader : public RtpFileReaderImpl {
for (SsrcMapIterator mit = packets_by_ssrc_.begin();
mit != packets_by_ssrc_.end(); ++mit) {
uint32_t ssrc = mit->first;
- const std::vector<uint32_t>& packet_numbers = mit->second;
- uint8_t pt = packets_[packet_numbers[0]].rtp_header.payloadType;
+ const std::vector<uint32_t>& packet_indices = mit->second;
+ uint8_t pt = packets_[packet_indices[0]].rtp_header.payloadType;
printf("SSRC: %08x, %" PRIuS " packets, pt=%d\n", ssrc,
- packet_numbers.size(), pt);
+ packet_indices.size(), pt);
}
// TODO(solenberg): Better validation of identified SSRC streams.
@@ -419,8 +424,10 @@ class PcapReader : public RtpFileReaderImpl {
return kResultSuccess;
}
- int ReadPacket(int32_t* next_packet_pos, uint32_t stream_start_ms,
- uint32_t number) {
+ int ReadPacket(int32_t* next_packet_pos,
+ uint32_t stream_start_ms,
+ uint32_t number,
+ const std::set<uint32_t>& ssrc_filter) {
assert(next_packet_pos);
uint32_t ts_sec; // Timestamp seconds.
@@ -457,8 +464,13 @@ class PcapReader : public RtpFileReaderImpl {
}
uint32_t ssrc = marker.rtp_header.ssrc;
- packets_by_ssrc_[ssrc].push_back(marker.packet_number);
- packets_.push_back(marker);
+ if (ssrc_filter.empty() || ssrc_filter.find(ssrc) != ssrc_filter.end()) {
+ packets_by_ssrc_[ssrc].push_back(
+ static_cast<uint32_t>(packets_.size()));
+ packets_.push_back(marker);
+ } else {
+ return kResultSkip;
+ }
}
return kResultSuccess;
@@ -632,7 +644,8 @@ class PcapReader : public RtpFileReaderImpl {
};
RtpFileReader* RtpFileReader::Create(FileFormat format,
- const std::string& filename) {
+ const std::string& filename,
+ const std::set<uint32_t>& ssrc_filter) {
RtpFileReaderImpl* reader = NULL;
switch (format) {
case kPcap:
@@ -645,12 +658,17 @@ RtpFileReader* RtpFileReader::Create(FileFormat format,
reader = new InterleavedRtpFileReader();
break;
}
- if (!reader->Init(filename)) {
+ if (!reader->Init(filename, ssrc_filter)) {
delete reader;
return NULL;
}
return reader;
}
+RtpFileReader* RtpFileReader::Create(FileFormat format,
+ const std::string& filename) {
+ return RtpFileReader::Create(format, filename, std::set<uint32_t>());
+}
+
} // namespace test
} // namespace webrtc
« no previous file with comments | « webrtc/test/rtp_file_reader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698