Exemplo n.º 1
0
    def pipeline_dot(self):
        t = g_type_name_from_instance(self.val)

        s = "digraph pipeline {\n"
        s += "  rankdir=LR;\n"
        s += "  fontname=\"sans\";\n"
        s += "  fontsize=\"10\";\n"
        s += "  labelloc=t;\n"
        s += "  nodesep=.1;\n"
        s += "  ranksep=.2;\n"
        s += "  label=\"<%s>\\n%s%s%s\";\n" % (t, self.name(), "", "")
        s += "  node [style=\"filled,rounded\", shape=box, fontsize=\"9\", " \
             "fontname=\"sans\", margin=\"0.0,0.0\"];\n"
        s += "  edge [labelfontsize=\"6\", fontsize=\"9\", " \
             "fontname=\"monospace\"];\n"
        s += "  \n"
        s += "  legend [\n"
        s += "    pos=\"0,0!\",\n"
        s += "    margin=\"0.05,0.05\",\n"
        s += "    style=\"filled\",\n"
        s += "    label=\"Legend\\lElement-States: [~] void-pending, " \
             "[0] null, [-] ready, [=] paused, [>] playing\\l" \
             "Pad-Activation: [-] none, [>] push, [<] pull\\l" \
             "Pad-Flags: [b]locked, [f]lushing, [b]locking, [E]OS; " \
             "upper-case is set\\lPad-Task: [T] has started task, " \
             "[t] has paused task\\l\",\n"
        s += "  ];"
        s += "\n"

        s += self.dot(1)

        s += "}\n"

        return s
Exemplo n.º 2
0
    def print(self, indent):
        _gdb_write(
            indent,
            "%s(%s) {" % (g_type_name_from_instance(self.val), self.name()))
        for p in self.pads():
            p.print(indent + 2)

        first = True
        for child in self.children():
            if first:
                _gdb_write(indent + 2, "children:")
                first = False
            _gdb_write(indent + 3, child.name())

        current_state = self.val["current_state"]
        s = "state: %s" % element_state_to_name(current_state)
        for var in ("pending", "target"):
            state = self.val[var + "_state"]
            if state > 0 and state != current_state:
                s += ", %s: %s" % (var, element_state_to_name(state))
        _gdb_write(indent + 2, s)

        _gdb_write(indent + 2,
                   "base_time: %s" % format_time_value(self.val["base_time"]))
        _gdb_write(
            indent + 2,
            "start_time: %s" % format_time_value(self.val["start_time"]))

        _gdb_write(indent, "}")
Exemplo n.º 3
0
 def print(self, indent):
     _gdb_write(
         indent,
         "%s(%s) {" % (g_type_name_from_instance(self.val), self.name()))
     for p in self.pads():
         p.print(indent + 2)
     _gdb_write(indent, "}")
Exemplo n.º 4
0
    def _dot(self, indent=0):
        spc = "  " * indent

        s = "%ssubgraph cluster_%s {\n" % (spc, self.dot_name())
        s += "%s  fontname=\"Bitstream Vera Sans\";\n" % spc
        s += "%s  fontsize=\"8\";\n" % spc
        s += "%s  style=\"filled,rounded\";\n" % spc
        s += "%s  color=black;\n" % spc
        s += "%s  label=\"%s\\n%s%s%s\";\n" % \
             (spc, g_type_name_from_instance(self.val), self.name(),
              self._state_dot(), "")

        sink_name = None
        if self.has_pads("sinkpads"):
            (ss, sink_name) = self._dot_pads(indent + 1, "sinkpads",
                                             self.dot_name() + "_sink")
            s += ss
        src_name = None
        if self.has_pads("srcpads"):
            (ss, src_name) = self._dot_pads(indent + 1, "srcpads",
                                            self.dot_name() + "_src")
            s += ss
        if sink_name and src_name:
            name = self.dot_name()
            s += "%s  %s_%s -> %s_%s [style=\"invis\"];\n" % \
                 (spc, name, sink_name, name, src_name)

        if gst_is_bin(self.val):
            s += "%s  fillcolor=\"#ffffff\";\n" % spc
            s += self.dot(indent + 1)
        else:
            if src_name and not sink_name:
                s += "%s  fillcolor=\"#ffaaaa\";\n" % spc
            elif not src_name and sink_name:
                s += "%s  fillcolor=\"#aaaaff\";\n" % spc
            elif src_name and sink_name:
                s += "%s  fillcolor=\"#aaffaa\";\n" % spc
            else:
                s += "%s  fillcolor=\"#ffffff\";\n" % spc
        s += "%s}\n\n" % spc

        for p in self.pads():
            if not p.is_linked():
                continue
            if p.direction() == "GST_PAD_SRC":
                s += p.link_dot(indent, self)
            else:
                pp = p.peer()
                if not g_inherits_type(pp.val, "GstGhostPad") and \
                   g_inherits_type(pp.val, "GstProxyPad"):
                    s += pp.link_dot(indent, None)
        return s
Exemplo n.º 5
0
 def to_string(self):
     try:
         name = g_type_name_from_instance(self.val)
         if not name:
             name = str(self.val.type.target())
         if long(self.val) != 0:
             inst = self.val.cast(gdb.lookup_type("GstObject").pointer())
             inst_name = inst["name"].string()
             if inst_name:
                 name += "|" + inst_name
         return ("0x%x [%s]") % (long(self.val), name)
     except RuntimeError:
         return "0x%x" % long(self.val)