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

Unified Diff: webrtc/logging/rtc_event_log/rtc_event_log_parser.cc

Issue 2918103002: Make rtc_event_log2text output header extensions (Closed)
Patch Set: Add comment about colliding video and audio ssrcs and extension maps Created 3 years, 6 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/logging/rtc_event_log/rtc_event_log_parser.cc
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
index d2cdcd5b5dda623aeee6444cfb909b1f7a336b31..78dd4fdce782428e6c24d267f1a7a655f6136030 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
@@ -158,6 +158,12 @@ bool ParsedRtcEventLog::ParseStream(std::istream& stream) {
// Check whether we have reached end of file.
stream.peek();
if (stream.eof()) {
+ // Process all extensions maps for faster look-up later.
+ for (auto& event_stream : streams_) {
+ rtp_extensions_maps_[StreamId(event_stream.ssrc,
+ event_stream.direction)] =
+ &event_stream.rtp_extensions_map;
+ }
return true;
}
@@ -204,34 +210,41 @@ bool ParsedRtcEventLog::ParseStream(std::istream& stream) {
case VIDEO_RECEIVER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetVideoReceiveConfig(event);
streams_.emplace_back(config.remote_ssrc, MediaType::VIDEO,
- kIncomingPacket);
+ kIncomingPacket,
+ RtpHeaderExtensionMap(config.rtp_extensions));
streams_.emplace_back(config.local_ssrc, MediaType::VIDEO,
- kOutgoingPacket);
+ kOutgoingPacket,
+ RtpHeaderExtensionMap(config.rtp_extensions));
break;
}
case VIDEO_SENDER_CONFIG_EVENT: {
std::vector<rtclog::StreamConfig> configs = GetVideoSendConfig(event);
for (size_t i = 0; i < configs.size(); i++) {
- streams_.emplace_back(configs[i].local_ssrc, MediaType::VIDEO,
- kOutgoingPacket);
+ streams_.emplace_back(
+ configs[i].local_ssrc, MediaType::VIDEO, kOutgoingPacket,
+ RtpHeaderExtensionMap(configs[i].rtp_extensions));
- streams_.emplace_back(configs[i].rtx_ssrc, MediaType::VIDEO,
- kOutgoingPacket);
+ streams_.emplace_back(
+ configs[i].rtx_ssrc, MediaType::VIDEO, kOutgoingPacket,
+ RtpHeaderExtensionMap(configs[i].rtp_extensions));
}
break;
}
case AUDIO_RECEIVER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetAudioReceiveConfig(event);
streams_.emplace_back(config.remote_ssrc, MediaType::AUDIO,
- kIncomingPacket);
+ kIncomingPacket,
+ RtpHeaderExtensionMap(config.rtp_extensions));
streams_.emplace_back(config.local_ssrc, MediaType::AUDIO,
- kOutgoingPacket);
+ kOutgoingPacket,
+ RtpHeaderExtensionMap(config.rtp_extensions));
break;
}
case AUDIO_SENDER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetAudioSendConfig(event);
streams_.emplace_back(config.local_ssrc, MediaType::AUDIO,
- kOutgoingPacket);
+ kOutgoingPacket,
+ RtpHeaderExtensionMap(config.rtp_extensions));
break;
}
default:
@@ -262,11 +275,12 @@ ParsedRtcEventLog::EventType ParsedRtcEventLog::GetEventType(
}
// The header must have space for at least IP_PACKET_SIZE bytes.
-void ParsedRtcEventLog::GetRtpHeader(size_t index,
- PacketDirection* incoming,
- uint8_t* header,
- size_t* header_length,
- size_t* total_length) const {
+webrtc::RtpHeaderExtensionMap* ParsedRtcEventLog::GetRtpHeader(
+ size_t index,
+ PacketDirection* incoming,
+ uint8_t* header,
+ size_t* header_length,
+ size_t* total_length) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
const rtclog::Event& event = events_[index];
RTC_CHECK(event.has_type());
@@ -295,7 +309,15 @@ void ParsedRtcEventLog::GetRtpHeader(size_t index,
RTC_CHECK_LE(rtp_packet.header().size(),
static_cast<size_t>(IP_PACKET_SIZE));
memcpy(header, rtp_packet.header().data(), rtp_packet.header().size());
+ uint32_t ssrc = ByteReader<uint32_t>::ReadBigEndian(header + 8);
+ StreamId stream_id(
+ ssrc, rtp_packet.incoming() ? kIncomingPacket : kOutgoingPacket);
+ auto it = rtp_extensions_maps_.find(stream_id);
+ if (it != rtp_extensions_maps_.end()) {
+ return it->second;
+ }
}
+ return nullptr;
}
// The packet must have space for at least IP_PACKET_SIZE bytes.

Powered by Google App Engine
This is Rietveld 408576698