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:
parent
d52bef7d64
commit
eb24dd01be
@ -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
|
||||
|
||||
@ -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")]
|
||||
|
||||
@ -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!")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user