home *** CD-ROM | disk | FTP | other *** search
- import os
-
- import gobject
- import gst
-
- def gst_dump(bin):
- dump_element(bin, 0)
-
- def dump_bin(bin, indent):
- # Iterate the children
- for child in bin.get_list():
- dump_element(child, indent + 2)
-
- def dump_element(element, indent):
- states = { 1: 'NULL', 2: 'READY',
- 4: 'PAUSED', 8: 'PLAYING' }
-
- state = 'UNKNOWN'
- try:
- state = states[element.get_state()]
- except KeyError:
- state = 'UNKNOWN (%d)' % element.get_state()
-
- c = element.get_clock()
- if c is None:
- clock_str = "clock - None"
- else:
- clock_str = "clock - %s" % (c.get_name())
-
- out = "%s (%s): state %s, %s" % (element.get_name(),
- gobject.type_name(element.__gtype__), state, clock_str)
-
- print out.rjust(len(out) + indent)
-
- tmp = { True: 'active', False: 'inactive' }
-
- for curpad in element.get_pad_list():
- if curpad.get_direction() == gst.PAD_SRC:
- if curpad.is_linked():
- peer = curpad.get_peer()
- out = " - %s:%s (%s) => %s:%s (%s)" % (
- curpad.get_parent().get_name(), curpad.get_name(),
- tmp[curpad.is_active()],
- peer.get_parent().get_name(), peer.get_name(),
- tmp[peer.is_active()])
-
- print out.rjust(len(out) + indent)
-
- if isinstance(element, gst.Bin):
- dump_bin(element, indent + 2)
- elif isinstance(element, gst.Queue):
- out = " - time_level: %ld" % (
- element.get_property('current-level-time'))
- print out.rjust(len(out) + indent)
- out = " - bytes_level: %ld" % (
- element.get_property('current-level-bytes'))
- print out.rjust(len(out) + indent)
-
- def gc_collect(reason=None):
- """
- Garbage-collect if GST_GC env var is set.
- This helps in debugging object refcounting.
- Sprinkle liberally around checkpoints.
- """
- env = os.environ.get('GST_GC', None)
- if not env:
- return
- import gc
- if env == 'DEBUG_LEAK':
- gc.set_debug(gc.DEBUG_LEAK)
-
- gst.debug('collecting garbage')
- if reason:
- gst.debug('because of %s' % reason)
- count = gc.collect()
- gst.debug('collected garbage, %d objects collected, %d left' % (
- count, len(gc.get_objects())))
-