From: Michael Olbrich Date: Sat, 11 May 2019 19:08:50 +0000 (+0200) Subject: gdb: print more data for segment events X-Git-Tag: 1.19.3~1178 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4877afc1458ac7c06bbf9beb244672ddf7451657;p=platform%2Fupstream%2Fgstreamer.git gdb: print more data for segment events This add the different timestamps for segment events: (gdb) gst-print pad SrcPad(src, push) { events: [...] segment: time rate: 1.1 start: 0:03:08.449753330 time: 0:03:08.449753330 position: 0:03:08.449753330 duration: 0:12:14.166687500 [...] } --- diff --git a/libs/gst/helpers/gst_gdb.py b/libs/gst/helpers/gst_gdb.py index 1159e97..114d2e7 100644 --- a/libs/gst/helpers/gst_gdb.py +++ b/libs/gst/helpers/gst_gdb.py @@ -525,6 +525,41 @@ class GdbGstStructure: _gdb_write(indent+1, "%s: %s" % (key, str(value))) +class GdbGstSegment: + def __init__(self, val): + self.val = val + self.fmt = str(self.val["format"]).split("_")[-1].lower() + + def format_value(self, n): + if self.fmt == "time": + return format_time(n, False) + else: + return str(n) + + def print_optional(self, indent, key, skip=None): + value = int(self.val[key]) + if skip is None or value != skip: + _gdb_write(indent, "%s:%s %s" % + (key, (8-len(key))*" ", self.format_value(value))) + + def print(self, indent): + _gdb_write(indent, "segment: %s" % self.fmt) + rate = float(self.val["rate"]) + applied_rate = float(self.val["applied_rate"]) + if applied_rate != 1.0: + applied = "(applied rate: %g)" % applied_rate + else: + applied = "" + _gdb_write(indent+1, "rate: %g%s" % (rate, applied)) + self.print_optional(indent+1, "base", 0) + self.print_optional(indent+1, "offset", 0) + self.print_optional(indent+1, "start") + self.print_optional(indent+1, "stop", GST_CLOCK_TIME_NONE) + self.print_optional(indent+1, "time") + self.print_optional(indent+1, "position") + self.print_optional(indent+1, "duration", GST_CLOCK_TIME_NONE) + + class GdbGstEvent: def __init__(self, val): self.val = val.cast(gdb.lookup_type("GstEventImpl").pointer()) @@ -556,15 +591,7 @@ class GdbGstEvent: _gdb_write(indent + 1, "stream-id: %s" % stream_id.string()) elif typestr == "segment": segment = self.structure().value("segment").value() - fmt = str(segment["format"]).split("_")[-1].lower() - _gdb_write(indent, "segment: %s" % fmt) - rate = float(segment["rate"]) - applied_rate = float(segment["applied_rate"]) - if applied_rate != 1.0: - applied = "(applied rate: %g)" % applied_rate - else: - applied = "" - _gdb_write(indent+1, "rate: %g%s" % (rate, applied)) + GdbGstSegment(segment).print(indent) elif typestr == "tag": struct = self.structure() # skip 'GstTagList-'