Fix bug that skips postprocessing after parsing a broken event log.
Bug: webrtc:9323 Change-Id: I7bdaf1b37ed172ec519da491369f63065adde413 Reviewed-on: https://webrtc-review.googlesource.com/79520 Reviewed-by: Sebastian Jansson <srte@webrtc.org> Commit-Queue: Björn Terelius <terelius@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23429}
This commit is contained in:
committed by
Commit Bot
parent
f4d0afbb94
commit
5ceb0d9494
@ -354,6 +354,45 @@ bool ParsedRtcEventLogNew::ParseString(const std::string& s) {
|
||||
bool ParsedRtcEventLogNew::ParseStream(
|
||||
std::istream& stream) { // no-presubmit-check TODO(webrtc:8982)
|
||||
Clear();
|
||||
bool success = ParseStreamInternal(stream);
|
||||
|
||||
// ParseStreamInternal stores the RTP packets in a map indexed by SSRC.
|
||||
// Since we dont need rapid lookup based on SSRC after parsing, we move the
|
||||
// packets_streams from map to vector.
|
||||
incoming_rtp_packets_by_ssrc_.reserve(incoming_rtp_packets_map_.size());
|
||||
for (const auto& kv : incoming_rtp_packets_map_) {
|
||||
incoming_rtp_packets_by_ssrc_.emplace_back(LoggedRtpStreamIncoming());
|
||||
incoming_rtp_packets_by_ssrc_.back().ssrc = kv.first;
|
||||
incoming_rtp_packets_by_ssrc_.back().incoming_packets =
|
||||
std::move(kv.second);
|
||||
}
|
||||
incoming_rtp_packets_map_.clear();
|
||||
outgoing_rtp_packets_by_ssrc_.reserve(outgoing_rtp_packets_map_.size());
|
||||
for (const auto& kv : outgoing_rtp_packets_map_) {
|
||||
outgoing_rtp_packets_by_ssrc_.emplace_back(LoggedRtpStreamOutgoing());
|
||||
outgoing_rtp_packets_by_ssrc_.back().ssrc = kv.first;
|
||||
outgoing_rtp_packets_by_ssrc_.back().outgoing_packets =
|
||||
std::move(kv.second);
|
||||
}
|
||||
outgoing_rtp_packets_map_.clear();
|
||||
|
||||
// Build PacketViews for easier iteration over RTP packets
|
||||
for (const auto& stream : incoming_rtp_packets_by_ssrc_) {
|
||||
incoming_rtp_packet_views_by_ssrc_.emplace_back(
|
||||
LoggedRtpStreamView(stream.ssrc, stream.incoming_packets.data(),
|
||||
stream.incoming_packets.size()));
|
||||
}
|
||||
for (const auto& stream : outgoing_rtp_packets_by_ssrc_) {
|
||||
outgoing_rtp_packet_views_by_ssrc_.emplace_back(
|
||||
LoggedRtpStreamView(stream.ssrc, stream.outgoing_packets.data(),
|
||||
stream.outgoing_packets.size()));
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
bool ParsedRtcEventLogNew::ParseStreamInternal(
|
||||
std::istream& stream) { // no-presubmit-check TODO(webrtc:8982)
|
||||
const size_t kMaxEventSize = (1u << 16) - 1;
|
||||
std::vector<char> tmp_buffer(kMaxEventSize);
|
||||
uint64_t tag;
|
||||
@ -410,38 +449,8 @@ bool ParsedRtcEventLogNew::ParseStream(
|
||||
}
|
||||
|
||||
StoreParsedEvent(event);
|
||||
|
||||
events_.push_back(event);
|
||||
}
|
||||
|
||||
// Move packets_streams from map to vector.
|
||||
incoming_rtp_packets_by_ssrc_.reserve(incoming_rtp_packets_map_.size());
|
||||
for (const auto& kv : incoming_rtp_packets_map_) {
|
||||
incoming_rtp_packets_by_ssrc_.emplace_back(LoggedRtpStreamIncoming());
|
||||
incoming_rtp_packets_by_ssrc_.back().ssrc = kv.first;
|
||||
incoming_rtp_packets_by_ssrc_.back().incoming_packets =
|
||||
std::move(kv.second);
|
||||
}
|
||||
outgoing_rtp_packets_by_ssrc_.reserve(outgoing_rtp_packets_map_.size());
|
||||
for (const auto& kv : outgoing_rtp_packets_map_) {
|
||||
outgoing_rtp_packets_by_ssrc_.emplace_back(LoggedRtpStreamOutgoing());
|
||||
outgoing_rtp_packets_by_ssrc_.back().ssrc = kv.first;
|
||||
outgoing_rtp_packets_by_ssrc_.back().outgoing_packets =
|
||||
std::move(kv.second);
|
||||
}
|
||||
|
||||
// Build PacketViews for easier iteration over RTP packets
|
||||
for (const auto& stream : incoming_rtp_packets_by_ssrc_) {
|
||||
incoming_rtp_packet_views_by_ssrc_.emplace_back(
|
||||
LoggedRtpStreamView(stream.ssrc, stream.incoming_packets.data(),
|
||||
stream.incoming_packets.size()));
|
||||
}
|
||||
for (const auto& stream : outgoing_rtp_packets_by_ssrc_) {
|
||||
outgoing_rtp_packet_views_by_ssrc_.emplace_back(
|
||||
LoggedRtpStreamView(stream.ssrc, stream.outgoing_packets.data(),
|
||||
stream.outgoing_packets.size()));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -776,6 +776,9 @@ class ParsedRtcEventLogNew {
|
||||
int64_t last_timestamp() const { return last_timestamp_; }
|
||||
|
||||
private:
|
||||
bool ParseStreamInternal(
|
||||
std::istream& stream); // no-presubmit-check TODO(webrtc:8982)
|
||||
|
||||
void StoreParsedEvent(const rtclog::Event& event);
|
||||
|
||||
rtclog::StreamConfig GetVideoReceiveConfig(const rtclog::Event& event) const;
|
||||
|
||||
Reference in New Issue
Block a user