diff options
author | Daniel Drake <dsd@laptop.org> | 2010-04-22 14:41:19 (GMT) |
---|---|---|
committer | Daniel Drake <dan@reactivated.net> | 2010-04-29 14:49:26 (GMT) |
commit | 85dde2f620eae56e8559ef700b6af71ead7a0c9e (patch) | |
tree | be690c06c27d139ede37a5dfc15f8fd4ba291ddf /glive.py | |
parent | f6de5db915f077f4d90e68d5ca65b6c986080784 (diff) |
Fallback to ximagesink if Xv is not available
Like it did before the rewrite
Diffstat (limited to 'glive.py')
-rw-r--r-- | glive.py | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -182,11 +182,23 @@ class Glive: tee = gst.element_factory_make("tee", "tee") queue = gst.element_factory_make("queue", "dispqueue") - xvsink = gst.element_factory_make("xvimagesink", "xvsink") - self.pipeline.add(src, rate, tee, queue, xvsink) + self.pipeline.add(src, rate, tee, queue) src.link(rate) rate.link(tee, ratecaps) - gst.element_link_many(tee, queue, xvsink) + gst.element_link_many(tee, queue) + + xvsink = gst.element_factory_make("xvimagesink", "xvsink") + xv_available = xvsink.set_state(gst.STATE_PAUSED) != gst.STATE_CHANGE_FAILURE + xvsink.set_state(gst.STATE_NULL) + + if xv_available: + self.pipeline.add(xvsink) + queue.link(xvsink) + else: + cspace = gst.element_factory_make("ffmpegcolorspace") + xsink = gst.element_factory_make("ximagesink") + self.pipeline.add(cspace, xsink) + gst.element_link_many(queue, cspace, xsink) def thumbPipe(self): return self.thumbPipes[ len(self.thumbPipes)-1 ] |