All pastes #719470 Raw Edit

Anonymous

public python v1 · immutable
#719470 ·published 2007-09-29 10:02 UTC
rendered paste body
import gobjectgobject.threads_init ()import gstclass Switch (object):    def __init__ (self):        self.loop = gobject.MainLoop ()        self.pipeline = gst.Pipeline ()        self.bus = self.pipeline.get_bus ()                self.bus.connect ("message::eos", self._bus_message_eos_cb)        self.bus.connect ("message::error", self._bus_message_error_cb)        self.video1 = gst.element_factory_make ("videotestsrc")        self.video2 = gst.element_factory_make ("videotestsrc")        self.video2.props.pattern = 4        self.csp = gst.element_factory_make ("ffmpegcolorspace")        self.sink = gst.element_factory_make ("ximagesink")        self.pipeline.add (self.video1, self.csp, self.sink)        gst.element_link_many (self.video1, self.csp, self.sink)    def _bus_message_eos_cb (self, bus, message):        print "eos"        self.loop.quit ()    def _bus_message_error_cb (self, bus, message):        print "error", message        self.loop.quit ()    def _pad_blocked_cb (self, pad, blocked):        pad.unlink (pad.get_peer ())        self.pipeline.add (self.video2)        self.video2.link (self.csp)        self.video2.set_state (gst.STATE_PLAYING)    def _timeout_cb (self):        self.video1.get_pad ("src").set_blocked_async (True,            self._pad_blocked_cb)    def start (self):        self.pipeline.set_state (gst.STATE_PLAYING)        gobject.timeout_add (10000, self._timeout_cb)        self.loop.run ()if __name__ == '__main__':    Switch ().start ()