Improvements to UI to python event log analyzer tool.

SSRCs are now filtered by incoming and outgoing.

NOTRY=True

Review-Url: https://codereview.webrtc.org/2310063002
Cr-Commit-Position: refs/heads/master@{#14092}
This commit is contained in:
aleloi 2016-09-06 06:34:17 -07:00 committed by Commit bot
parent d52bef7d64
commit eb24dd01be
3 changed files with 22 additions and 4 deletions

View File

@ -72,6 +72,14 @@ def unwrap(data, mod):
mod // 2) % mod - (mod // 2)
return lst
def ssrc_directions(data_points):
ssrc_is_incoming = {}
for point in data_points:
ssrc_is_incoming[point.ssrc] = point.incoming
return ssrc_is_incoming
# Python 2/3-compatible input function
if sys.version_info[0] <= 2:
get_input = raw_input

View File

@ -17,13 +17,14 @@ class DataPoint(object):
"""Simple container class for RTP events."""
def __init__(self, rtp_header_str, packet_size,
arrival_timestamp_us):
arrival_timestamp_us, incoming):
"""Builds a data point by parsing an RTP header, size and arrival time.
RTP header structure is defined in RFC 3550 section 5.1.
"""
self.size = packet_size
self.arrival_timestamp_ms = arrival_timestamp_us / 1000
self.incoming = incoming
header = struct.unpack_from("!HHII", rtp_header_str, 0)
(first2header_bytes, self.sequence_number, self.timestamp,
self.ssrc) = header
@ -46,6 +47,6 @@ def parse_protobuf(file_path):
return [DataPoint(event.rtp_packet.header,
event.rtp_packet.packet_length,
event.timestamp_us)
event.timestamp_us, event.rtp_packet.incoming)
for event in event_stream.stream
if event.HasField("rtp_packet")]

View File

@ -94,13 +94,22 @@ class RTPStatistics(object):
self.print_ssrc_info("", chosen_ssrc)
return chosen_ssrc
for (i, ssrc) in enumerate(self.ssrc_frequencies):
ssrc_is_incoming = misc.ssrc_directions(self.data_points)
incoming = [ssrc for ssrc in ssrc_is_incoming if ssrc_is_incoming[ssrc]]
outgoing = [ssrc for ssrc in ssrc_is_incoming if not ssrc_is_incoming[ssrc]]
print("\nIncoming:\n")
for (i, ssrc) in enumerate(incoming):
self.print_ssrc_info(i, ssrc)
print("\nOutgoing:\n")
for (i, ssrc) in enumerate(outgoing):
self.print_ssrc_info(i + len(incoming), ssrc)
while True:
chosen_index = int(misc.get_input("choose one> "))
if 0 <= chosen_index < len(self.ssrc_frequencies):
return list(self.ssrc_frequencies)[chosen_index]
return (incoming + outgoing)[chosen_index]
else:
print("Invalid index!")