Allow printing full packets in rtc_eventlog2text.
Add command line option to print packet contents as hex in rtc_eventlog2text. Bug: None Change-Id: I690706cfba883ca2248332622f2c9133b7ddaf6a Reviewed-on: https://webrtc-review.googlesource.com/20863 Commit-Queue: Björn Terelius <terelius@webrtc.org> Reviewed-by: Elad Alon <eladalon@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20590}
This commit is contained in:
committed by
Commit Bot
parent
7cfbf3a0ff
commit
2732bf5f20
@ -10,6 +10,7 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <iomanip> // setfill, setw
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
@ -60,6 +61,10 @@ DEFINE_bool(playout, true, "Use --noplayout to exclude audio playout events.");
|
||||
DEFINE_bool(ana, true, "Use --noana to exclude ANA events.");
|
||||
DEFINE_bool(probe, true, "Use --noprobe to exclude probe events.");
|
||||
|
||||
DEFINE_bool(print_full_packets,
|
||||
false,
|
||||
"Print the full RTP headers and RTCP packets in hex.");
|
||||
|
||||
// TODO(terelius): Allow a list of SSRCs.
|
||||
DEFINE_string(ssrc,
|
||||
"",
|
||||
@ -301,7 +306,9 @@ void PrintRtpFeedback(const webrtc::ParsedRtcEventLog& parsed_stream,
|
||||
return;
|
||||
std::cout << log_timestamp << "\t"
|
||||
<< "RTCP_NEWFB" << StreamInfo(direction, media_type)
|
||||
<< "\tssrc=" << transport_feedback.sender_ssrc() << std::endl;
|
||||
<< "\tsender_ssrc=" << transport_feedback.sender_ssrc()
|
||||
<< "\tmedia_ssrc=" << transport_feedback.media_ssrc()
|
||||
<< std::endl;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -489,6 +496,18 @@ int main(int argc, char* argv[]) {
|
||||
static_cast<int>(parsed_header.extension.audioLevel);
|
||||
}
|
||||
std::cout << std::endl;
|
||||
if (FLAG_print_full_packets) {
|
||||
// TODO(terelius): Rewrite this file to use printf instead of cout.
|
||||
std::cout << "\t\t" << std::hex;
|
||||
char prev_fill = std::cout.fill('0');
|
||||
for (size_t i = 0; i < header_length; i++) {
|
||||
std::cout << std::setw(2) << static_cast<unsigned>(header[i]);
|
||||
if (i % 4 == 3)
|
||||
std::cout << " "; // Separator between 32-bit words.
|
||||
}
|
||||
std::cout.fill(prev_fill);
|
||||
std::cout << std::dec << std::endl;
|
||||
}
|
||||
}
|
||||
event_recognized = true;
|
||||
break;
|
||||
@ -508,6 +527,7 @@ int main(int argc, char* argv[]) {
|
||||
ptrdiff_t remaining_blocks_size = packet_end - next_block;
|
||||
RTC_DCHECK_GT(remaining_blocks_size, 0);
|
||||
if (!rtcp_block.Parse(next_block, remaining_blocks_size)) {
|
||||
RTC_LOG(LS_WARNING) << "Failed to parse RTCP";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -541,6 +561,19 @@ int main(int argc, char* argv[]) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (FLAG_print_full_packets) {
|
||||
std::cout << "\t\t" << std::hex;
|
||||
char prev_fill = std::cout.fill('0');
|
||||
for (const uint8_t* p = next_block; p < rtcp_block.NextPacket();
|
||||
p++) {
|
||||
std::cout << std::setw(2) << static_cast<unsigned>(*p);
|
||||
ptrdiff_t chars_printed = p - next_block;
|
||||
if (chars_printed % 4 == 3)
|
||||
std::cout << " "; // Separator between 32-bit words.
|
||||
}
|
||||
std::cout.fill(prev_fill);
|
||||
std::cout << std::dec << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
event_recognized = true;
|
||||
@ -566,8 +599,8 @@ int main(int argc, char* argv[]) {
|
||||
parsed_stream.GetLossBasedBweUpdate(i, &bitrate_bps, &fraction_loss,
|
||||
&total_packets);
|
||||
std::cout << parsed_stream.GetTimestamp(i) << "\tBWE(LOSS_BASED)"
|
||||
<< "\tbitrate_bps=" << bitrate_bps
|
||||
<< "\tfraction_loss=" << fraction_loss
|
||||
<< "\tbitrate_bps=" << bitrate_bps << "\tfraction_loss="
|
||||
<< static_cast<unsigned>(fraction_loss)
|
||||
<< "\ttotal_packets=" << total_packets << std::endl;
|
||||
}
|
||||
event_recognized = true;
|
||||
|
||||
Reference in New Issue
Block a user