From 96b88ffe354b360dfc7cc60a5e22e116604e506b Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Sun, 12 May 2019 07:45:31 +0200 Subject: [PATCH] gdb: add gst_element_pad() function Another helper to navigate a pipeline. It makes it possible to easily access the pads of an element: (gdb) print $gst_element_pad(basesink, "sink") $1 = 0x7fffe80770f0 [GstPad|sink] --- libs/gst/helpers/gst_gdb.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/libs/gst/helpers/gst_gdb.py b/libs/gst/helpers/gst_gdb.py index 114d2e75d6..e475c9fd4c 100644 --- a/libs/gst/helpers/gst_gdb.py +++ b/libs/gst/helpers/gst_gdb.py @@ -1157,8 +1157,35 @@ Find a child element with the given name""" return child +class GstElementPad(gdb.Function): + """\ +Get the pad with the given name""" + + def __init__(self): + super(GstElementPad, self).__init__("gst_element_pad") + + def invoke(self, element, arg): + value = gst_object_from_value(element) + if not g_inherits_type(value, "GstElement"): + raise Exception("'%s' is not a GstElement" % + str(value.address)) + + try: + name = arg.string() + except gdb.error: + raise Exception("Usage: $gst_element_pad(, \"\")") + + obj = GdbGstElement(value) + for pad in obj.pads(): + if pad.name() == name: + return pad.val + + raise Exception("No pad named '%s' found." % name) + + GstPipeline() GstBinGet() +GstElementPad() def register(obj):