Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/glive.py
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2010-04-29 00:18:25 (GMT)
committer Daniel Drake <dan@reactivated.net>2010-04-29 14:52:00 (GMT)
commitcf7fb15d94b335402e4ddd4cfad2e9e80c517ddd (patch)
tree4a055386bff67875a86fcd7224007243856d003b /glive.py
parente41dbf9b0a4df7fcdb1b7e7996ad185b648158bc (diff)
Place framerate limit directly on v4l2src
But we also maintain the gstreamer-level videorate framerate filter. This is because the XO-1.5 camera delivers a lot more frames than you ask for, and this throws off gstreamer's timings. http://dev.laptop.org/ticket/10137
Diffstat (limited to 'glive.py')
-rw-r--r--glive.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/glive.py b/glive.py
index 09e82bf..8e7268b 100644
--- a/glive.py
+++ b/glive.py
@@ -181,7 +181,14 @@ class Glive:
except:
pass
- rate = gst.element_factory_make("videorate", "vbrate")
+ # important to place the framerate limit directly on the v4l2src
+ # so that it gets communicated all the way down to the camera level
+ srccaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1')
+
+ # the XO-1.5 camera framerate limit increases image quality but
+ # still delivers way too many frames. add a gstreamer-level filter
+ # to keep the frame rate sensible.
+ rate = gst.element_factory_make("videorate")
ratecaps = gst.Caps('video/x-raw-yuv,framerate='+str(self.VIDEO_FRAMERATE_SMALL)+'/1')
tee = gst.element_factory_make("tee", "tee")
@@ -192,9 +199,9 @@ class Glive:
queue.set_property("max-size-buffers", 2)
self.pipeline.add(src, rate, tee, queue)
- src.link(rate)
+ src.link(rate, srccaps)
rate.link(tee, ratecaps)
- gst.element_link_many(tee, queue)
+ tee.link(queue)
xvsink = gst.element_factory_make("xvimagesink", "xvsink")
xv_available = xvsink.set_state(gst.STATE_PAUSED) != gst.STATE_CHANGE_FAILURE