Index: webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
index fab04c9c5751c3883e22169c9d788d5a52a66334..ec6681072232b1c609126f1a9aee197f73718e27 100644 |
--- a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
+++ b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
@@ -14,7 +14,6 @@ |
#include "gflags/gflags.h" |
#include "webrtc/base/checks.h" |
-#include "webrtc/call/call.h" |
#include "webrtc/common_types.h" |
#include "webrtc/logging/rtc_event_log/rtc_event_log_parser.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" |
@@ -52,6 +51,8 @@ DEFINE_string(ssrc, |
"Print only packets with this SSRC (decimal or hex, the latter " |
"starting with 0x)."); |
+using MediaType = webrtc::ParsedRtcEventLog::MediaType; |
+ |
static uint32_t filtered_ssrc = 0; |
// Parses the input string for a valid SSRC. If a valid SSRC is found, it is |
@@ -73,44 +74,18 @@ bool ParseSsrc(std::string str) { |
return str.empty() || (!ss.fail() && ss.eof()); |
} |
-// Struct used for storing SSRCs used in a Stream. |
-struct Stream { |
- Stream(uint32_t ssrc, |
- webrtc::MediaType media_type, |
- webrtc::PacketDirection direction) |
- : ssrc(ssrc), media_type(media_type), direction(direction) {} |
- uint32_t ssrc; |
- webrtc::MediaType media_type; |
- webrtc::PacketDirection direction; |
-}; |
- |
-// All configured streams found in the event log. |
-std::vector<Stream> global_streams; |
- |
-// Returns the MediaType for registered SSRCs. Search from the end to use last |
-// registered types first. |
-webrtc::MediaType GetMediaType(uint32_t ssrc, |
- webrtc::PacketDirection direction) { |
- for (auto rit = global_streams.rbegin(); rit != global_streams.rend(); |
- ++rit) { |
- if (rit->ssrc == ssrc && rit->direction == direction) |
- return rit->media_type; |
- } |
- return webrtc::MediaType::ANY; |
-} |
- |
bool ExcludePacket(webrtc::PacketDirection direction, |
- webrtc::MediaType media_type, |
+ MediaType media_type, |
uint32_t packet_ssrc) { |
if (FLAGS_nooutgoing && direction == webrtc::kOutgoingPacket) |
return true; |
if (FLAGS_noincoming && direction == webrtc::kIncomingPacket) |
return true; |
- if (FLAGS_noaudio && media_type == webrtc::MediaType::AUDIO) |
+ if (FLAGS_noaudio && media_type == MediaType::AUDIO) |
return true; |
- if (FLAGS_novideo && media_type == webrtc::MediaType::VIDEO) |
+ if (FLAGS_novideo && media_type == MediaType::VIDEO) |
return true; |
- if (FLAGS_nodata && media_type == webrtc::MediaType::DATA) |
+ if (FLAGS_nodata && media_type == MediaType::DATA) |
return true; |
if (!FLAGS_ssrc.empty() && packet_ssrc != filtered_ssrc) |
return true; |
@@ -118,23 +93,23 @@ bool ExcludePacket(webrtc::PacketDirection direction, |
} |
const char* StreamInfo(webrtc::PacketDirection direction, |
- webrtc::MediaType media_type) { |
+ MediaType media_type) { |
if (direction == webrtc::kOutgoingPacket) { |
- if (media_type == webrtc::MediaType::AUDIO) |
+ if (media_type == MediaType::AUDIO) |
return "(out,audio)"; |
- else if (media_type == webrtc::MediaType::VIDEO) |
+ else if (media_type == MediaType::VIDEO) |
return "(out,video)"; |
- else if (media_type == webrtc::MediaType::DATA) |
+ else if (media_type == MediaType::DATA) |
return "(out,data)"; |
else |
return "(out)"; |
} |
if (direction == webrtc::kIncomingPacket) { |
- if (media_type == webrtc::MediaType::AUDIO) |
+ if (media_type == MediaType::AUDIO) |
return "(in,audio)"; |
- else if (media_type == webrtc::MediaType::VIDEO) |
+ else if (media_type == MediaType::VIDEO) |
return "(in,video)"; |
- else if (media_type == webrtc::MediaType::DATA) |
+ else if (media_type == MediaType::DATA) |
return "(in,data)"; |
else |
return "(in)"; |
@@ -142,13 +117,15 @@ const char* StreamInfo(webrtc::PacketDirection direction, |
return "(unknown)"; |
} |
-void PrintSenderReport(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintSenderReport(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
webrtc::rtcp::SenderReport sr; |
if (!sr.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(sr.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(sr.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, sr.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -157,13 +134,15 @@ void PrintSenderReport(const webrtc::rtcp::CommonHeader& rtcp_block, |
<< "\ttimestamp=" << sr.rtp_timestamp() << std::endl; |
} |
-void PrintReceiverReport(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintReceiverReport(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
webrtc::rtcp::ReceiverReport rr; |
if (!rr.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(rr.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(rr.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, rr.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -171,13 +150,15 @@ void PrintReceiverReport(const webrtc::rtcp::CommonHeader& rtcp_block, |
<< "\tssrc=" << rr.sender_ssrc() << std::endl; |
} |
-void PrintXr(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintXr(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
webrtc::rtcp::ExtendedReports xr; |
if (!xr.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(xr.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(xr.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, xr.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -189,18 +170,20 @@ void PrintSdes(const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
std::cout << log_timestamp << "\t" |
- << "RTCP_SDES" << StreamInfo(direction, webrtc::MediaType::ANY) |
+ << "RTCP_SDES" << StreamInfo(direction, MediaType::ANY) |
<< std::endl; |
RTC_NOTREACHED() << "SDES should have been redacted when writing the log"; |
} |
-void PrintBye(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintBye(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
webrtc::rtcp::Bye bye; |
if (!bye.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(bye.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(bye.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, bye.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -208,7 +191,8 @@ void PrintBye(const webrtc::rtcp::CommonHeader& rtcp_block, |
<< "\tssrc=" << bye.sender_ssrc() << std::endl; |
} |
-void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintRtpFeedback(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
switch (rtcp_block.fmt()) { |
@@ -216,8 +200,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Nack nack; |
if (!nack.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(nack.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(nack.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, nack.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -229,8 +213,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Tmmbr tmmbr; |
if (!tmmbr.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(tmmbr.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(tmmbr.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, tmmbr.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -242,8 +226,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Tmmbn tmmbn; |
if (!tmmbn.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(tmmbn.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(tmmbn.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, tmmbn.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -255,8 +239,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::RapidResyncRequest sr_req; |
if (!sr_req.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(sr_req.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(sr_req.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, sr_req.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -268,8 +252,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::TransportFeedback transport_feedback; |
if (!transport_feedback.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(transport_feedback.sender_ssrc(), direction); |
+ MediaType media_type = parsed_stream.GetMediaType( |
+ transport_feedback.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, |
transport_feedback.sender_ssrc())) |
return; |
@@ -283,7 +267,8 @@ void PrintRtpFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
} |
} |
-void PrintPsFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
+void PrintPsFeedback(const webrtc::ParsedRtcEventLog& parsed_stream, |
+ const webrtc::rtcp::CommonHeader& rtcp_block, |
uint64_t log_timestamp, |
webrtc::PacketDirection direction) { |
switch (rtcp_block.fmt()) { |
@@ -291,7 +276,8 @@ void PrintPsFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Pli pli; |
if (!pli.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(pli.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(pli.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, pli.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -303,7 +289,8 @@ void PrintPsFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Fir fir; |
if (!fir.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = GetMediaType(fir.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(fir.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, fir.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -315,8 +302,8 @@ void PrintPsFeedback(const webrtc::rtcp::CommonHeader& rtcp_block, |
webrtc::rtcp::Remb remb; |
if (!remb.Parse(rtcp_block)) |
return; |
- webrtc::MediaType media_type = |
- GetMediaType(remb.sender_ssrc(), direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(remb.sender_ssrc(), direction); |
if (ExcludePacket(direction, media_type, remb.sender_ssrc())) |
return; |
std::cout << log_timestamp << "\t" |
@@ -362,67 +349,41 @@ int main(int argc, char* argv[]) { |
} |
for (size_t i = 0; i < parsed_stream.GetNumberOfEvents(); i++) { |
- if (parsed_stream.GetEventType(i) == |
- webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) { |
+ if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_noincoming && |
+ parsed_stream.GetEventType(i) == |
+ webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) { |
webrtc::rtclog::StreamConfig config; |
parsed_stream.GetVideoReceiveConfig(i, &config); |
- |
- global_streams.emplace_back(config.remote_ssrc, |
- webrtc::MediaType::VIDEO, |
- webrtc::kIncomingPacket); |
- global_streams.emplace_back(config.local_ssrc, |
- webrtc::MediaType::VIDEO, |
- webrtc::kOutgoingPacket); |
- |
- if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_noincoming) { |
- std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG" |
+ std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG" |
<< "\tssrc=" << config.remote_ssrc |
<< "\tfeedback_ssrc=" << config.local_ssrc << std::endl; |
- } |
} |
- if (parsed_stream.GetEventType(i) == |
- webrtc::ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) { |
+ if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_nooutgoing && |
+ parsed_stream.GetEventType(i) == |
+ webrtc::ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) { |
webrtc::rtclog::StreamConfig config; |
parsed_stream.GetVideoSendConfig(i, &config); |
- global_streams.emplace_back(config.local_ssrc, webrtc::MediaType::VIDEO, |
- webrtc::kOutgoingPacket); |
- |
- global_streams.emplace_back(config.rtx_ssrc, webrtc::MediaType::VIDEO, |
- webrtc::kOutgoingPacket); |
- |
- if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_nooutgoing) { |
std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_SEND_CONFIG"; |
std::cout << "\tssrcs=" << config.local_ssrc; |
std::cout << "\trtx_ssrcs=" << config.rtx_ssrc; |
std::cout << std::endl; |
- } |
} |
- if (parsed_stream.GetEventType(i) == |
- webrtc::ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT) { |
+ if (!FLAGS_noconfig && !FLAGS_noaudio && !FLAGS_noincoming && |
+ parsed_stream.GetEventType(i) == |
+ webrtc::ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT) { |
webrtc::rtclog::StreamConfig config; |
parsed_stream.GetAudioReceiveConfig(i, &config); |
- global_streams.emplace_back(config.remote_ssrc, |
- webrtc::MediaType::AUDIO, |
- webrtc::kIncomingPacket); |
- global_streams.emplace_back(config.local_ssrc, |
- webrtc::MediaType::AUDIO, |
- webrtc::kOutgoingPacket); |
- if (!FLAGS_noconfig && !FLAGS_noaudio && !FLAGS_noincoming) { |
- std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_RECV_CONFIG" |
- << "\tssrc=" << config.remote_ssrc |
- << "\tfeedback_ssrc=" << config.local_ssrc << std::endl; |
- } |
+ std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_RECV_CONFIG" |
+ << "\tssrc=" << config.remote_ssrc |
+ << "\tfeedback_ssrc=" << config.local_ssrc << std::endl; |
} |
- if (parsed_stream.GetEventType(i) == |
- webrtc::ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT) { |
+ if (!FLAGS_noconfig && !FLAGS_noaudio && !FLAGS_nooutgoing && |
+ parsed_stream.GetEventType(i) == |
+ webrtc::ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT) { |
webrtc::rtclog::StreamConfig config; |
parsed_stream.GetAudioSendConfig(i, &config); |
- global_streams.emplace_back(config.local_ssrc, webrtc::MediaType::AUDIO, |
- webrtc::kOutgoingPacket); |
- if (!FLAGS_noconfig && !FLAGS_noaudio && !FLAGS_nooutgoing) { |
- std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_SEND_CONFIG" |
- << "\tssrc=" << config.local_ssrc << std::endl; |
- } |
+ std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_SEND_CONFIG" |
+ << "\tssrc=" << config.local_ssrc << std::endl; |
} |
if (!FLAGS_nortp && |
parsed_stream.GetEventType(i) == webrtc::ParsedRtcEventLog::RTP_EVENT) { |
@@ -430,15 +391,16 @@ int main(int argc, char* argv[]) { |
size_t total_length; |
uint8_t header[IP_PACKET_SIZE]; |
webrtc::PacketDirection direction; |
- webrtc::MediaType media_type; |
- parsed_stream.GetRtpHeader(i, &direction, &media_type, header, |
- &header_length, &total_length); |
+ |
+ parsed_stream.GetRtpHeader(i, &direction, header, &header_length, |
+ &total_length); |
// Parse header to get SSRC and RTP time. |
webrtc::RtpUtility::RtpHeaderParser rtp_parser(header, header_length); |
webrtc::RTPHeader parsed_header; |
rtp_parser.Parse(&parsed_header); |
- media_type = GetMediaType(parsed_header.ssrc, direction); |
+ MediaType media_type = |
+ parsed_stream.GetMediaType(parsed_header.ssrc, direction); |
if (ExcludePacket(direction, media_type, parsed_header.ssrc)) |
continue; |
@@ -454,8 +416,7 @@ int main(int argc, char* argv[]) { |
size_t length; |
uint8_t packet[IP_PACKET_SIZE]; |
webrtc::PacketDirection direction; |
- webrtc::MediaType media_type; |
- parsed_stream.GetRtcpPacket(i, &direction, &media_type, packet, &length); |
+ parsed_stream.GetRtcpPacket(i, &direction, packet, &length); |
webrtc::rtcp::CommonHeader rtcp_block; |
const uint8_t* packet_end = packet + length; |
@@ -470,25 +431,29 @@ int main(int argc, char* argv[]) { |
uint64_t log_timestamp = parsed_stream.GetTimestamp(i); |
switch (rtcp_block.type()) { |
case webrtc::rtcp::SenderReport::kPacketType: |
- PrintSenderReport(rtcp_block, log_timestamp, direction); |
+ PrintSenderReport(parsed_stream, rtcp_block, log_timestamp, |
+ direction); |
break; |
case webrtc::rtcp::ReceiverReport::kPacketType: |
- PrintReceiverReport(rtcp_block, log_timestamp, direction); |
+ PrintReceiverReport(parsed_stream, rtcp_block, log_timestamp, |
+ direction); |
break; |
case webrtc::rtcp::Sdes::kPacketType: |
PrintSdes(rtcp_block, log_timestamp, direction); |
break; |
case webrtc::rtcp::ExtendedReports::kPacketType: |
- PrintXr(rtcp_block, log_timestamp, direction); |
+ PrintXr(parsed_stream, rtcp_block, log_timestamp, direction); |
break; |
case webrtc::rtcp::Bye::kPacketType: |
- PrintBye(rtcp_block, log_timestamp, direction); |
+ PrintBye(parsed_stream, rtcp_block, log_timestamp, direction); |
break; |
case webrtc::rtcp::Rtpfb::kPacketType: |
- PrintRtpFeedback(rtcp_block, log_timestamp, direction); |
+ PrintRtpFeedback(parsed_stream, rtcp_block, log_timestamp, |
+ direction); |
break; |
case webrtc::rtcp::Psfb::kPacketType: |
- PrintPsFeedback(rtcp_block, log_timestamp, direction); |
+ PrintPsFeedback(parsed_stream, rtcp_block, log_timestamp, |
+ direction); |
break; |
default: |
break; |