1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from flumotion.common import errors, gstreamer, messages
23 from flumotion.component import feedcomponent
24 from flumotion.component.effects.volume import volume
25
26 __version__ = "$Rev$"
27
28
29 -class Screencast(feedcomponent.ParseLaunchComponent):
30
32
33 def getProps():
34 ret = []
35 for k, default in (('width', 320),
36 ('height', 240),
37 ('x-offset', 0),
38 ('y-offset', 0),
39 ('framerate', (5, 1))):
40 ret.append(properties.get(k, default))
41 return ret
42 width, height, x_offset, y_offset, framerate = getProps()
43
44 src = 'ximagesrc'
45 if not gstreamer.element_factory_exists(src):
46 raise errors.MissingElementError(src)
47
48 return (
49 '%s startx=%d starty=%d endx=%d endy=%d use-damage=false'
50 ' ! ffmpegcolorspace'
51 ' ! video/x-raw-yuv,framerate=(fraction)%s,format=(fourcc)I420'
52 % (src, x_offset, y_offset, width + x_offset, height + y_offset,
53 '%d/%d' % framerate))
54