Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2010-04-22 14:41:19 (GMT)
committer Daniel Drake <dan@reactivated.net>2010-04-29 14:49:26 (GMT)
commit85dde2f620eae56e8559ef700b6af71ead7a0c9e (patch)
treebe690c06c27d139ede37a5dfc15f8fd4ba291ddf
parentf6de5db915f077f4d90e68d5ca65b6c986080784 (diff)
Fallback to ximagesink if Xv is not available
Like it did before the rewrite
-rw-r--r--glive.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/glive.py b/glive.py
index 2480fc8..7a02d1e 100644
--- a/glive.py
+++ b/glive.py
@@ -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 ]