12 class PyIdentity(gst.Element):
13 _sinkpadtemplate = gst.PadTemplate ("sink",
17 _srcpadtemplate = gst.PadTemplate ("src",
23 gst.Element.__init__(self)
25 self.sinkpad = gst.Pad(self._sinkpadtemplate, "sink")
26 self.sinkpad.set_chain_function(self.chainfunc)
27 self.sinkpad.set_event_function(self.eventfunc)
28 self.sinkpad.set_getcaps_function(gst.Pad.proxy_getcaps)
29 self.sinkpad.set_setcaps_function(gst.Pad.proxy_setcaps)
30 self.add_pad (self.sinkpad)
32 self.srcpad = gst.Pad(self._srcpadtemplate, "src")
34 self.srcpad.set_event_function(self.srceventfunc)
35 self.srcpad.set_query_function(self.srcqueryfunc)
36 self.srcpad.set_getcaps_function(gst.Pad.proxy_getcaps)
37 self.srcpad.set_setcaps_function(gst.Pad.proxy_setcaps)
38 self.add_pad (self.srcpad)
40 def chainfunc(self, pad, buffer):
41 gst.log ("Passing buffer with ts %d" % (buffer.timestamp))
42 return self.srcpad.push (buffer)
44 def eventfunc(self, pad, event):
45 return self.srcpad.push_event (event)
47 def srcqueryfunc (self, pad, query):
48 return self.sinkpad.query (query)
49 def srceventfunc (self, pad, event):
50 return self.sinkpad.push_event (event)
52 gobject.type_register(PyIdentity)
55 vt = gst.element_factory_make ("videotestsrc")
57 color = gst.element_factory_make ("ffmpegcolorspace")
58 scale = gst.element_factory_make ("videoscale")
59 q1 = gst.element_factory_make ("queue")
61 sink = gst.element_factory_make ("autovideosink")
63 pipe.add (vt, i1, q1, i2, color, scale, sink)
64 gst.element_link_many (vt, i1, q1, i2, color, scale, sink)
66 pipe.set_state (gst.STATE_PLAYING)
68 gobject.MainLoop().run()