Back to development
[platform/upstream/gstreamer.git] / subprojects / gst-python / old_examples / pyidentity.py
1 #!/usr/bin/env python
2
3 import pygtk
4 pygtk.require ("2.0")
5 import gobject
6 gobject.threads_init()
7
8 import pygst
9 pygst.require('0.10')
10 import gst
11
12 class PyIdentity(gst.Element):
13     _sinkpadtemplate = gst.PadTemplate ("sink",
14                                          gst.PAD_SINK,
15                                          gst.PAD_ALWAYS,
16                                          gst.caps_new_any())
17     _srcpadtemplate = gst.PadTemplate ("src",
18                                          gst.PAD_SRC,
19                                          gst.PAD_ALWAYS,
20                                          gst.caps_new_any())
21
22     def __init__(self):
23         gst.Element.__init__(self)
24
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)
31
32         self.srcpad = gst.Pad(self._srcpadtemplate, "src")
33
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)
39
40     def chainfunc(self, pad, buffer):
41         gst.log ("Passing buffer with ts %d" % (buffer.timestamp))
42         return self.srcpad.push (buffer)
43
44     def eventfunc(self, pad, event):
45         return self.srcpad.push_event (event)
46         
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)
51
52 gobject.type_register(PyIdentity)
53
54 pipe = gst.Pipeline()
55 vt = gst.element_factory_make ("videotestsrc")
56 i1 = PyIdentity()
57 color = gst.element_factory_make ("ffmpegcolorspace")
58 scale = gst.element_factory_make ("videoscale")
59 q1 = gst.element_factory_make ("queue")
60 i2 = PyIdentity()
61 sink = gst.element_factory_make ("autovideosink")
62
63 pipe.add (vt, i1, q1, i2, color, scale, sink)
64 gst.element_link_many (vt, i1, q1, i2, color, scale, sink)
65
66 pipe.set_state (gst.STATE_PLAYING)
67
68 gobject.MainLoop().run()