summaryrefslogtreecommitdiff
path: root/examples/video-controller.py
blob: 4b561d1a652ed5d82f4df13997f944816f69a274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python
# -*- Mode: Python -*-
# vi:si:et:sw=4:sts=4:ts=4

# videomixer-controller.py
# (c) 2008 Stefan Kost <ensonic@users.sf.net>
# Test case for the GstController using videomixer and videotestsrc

import pygst
pygst.require('0.10')
import gst
import time

def main():
    pipeline = gst.Pipeline("videocontroller")
    src = gst.element_factory_make("videotestsrc", "src")
    mix = gst.element_factory_make("videomixer", "mix")
    conv = gst.element_factory_make("ffmpegcolorspace", "conv")
    sink = gst.element_factory_make("autovideosink", "sink")
    pipeline.add(src, mix, conv, sink)

    spad = src.get_static_pad('src')
    dpad = mix.get_request_pad('sink_%d')

    spad.link(dpad)
    mix.link(conv)
    conv.link(sink)

    control = gst.Controller(dpad, "xpos", "ypos")
    control.set_interpolation_mode("xpos", gst.INTERPOLATE_LINEAR)
    control.set_interpolation_mode("ypos", gst.INTERPOLATE_LINEAR)

    control.set("xpos", 0, 0)
    control.set("xpos", 5 * gst.SECOND, 200)

    control.set("ypos", 0, 0)
    control.set("ypos", 5 * gst.SECOND, 200)

    pipeline.set_state(gst.STATE_PLAYING)

    time.sleep(7)

if __name__ == "__main__":
    main()