summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzxiiro <zxiiro@enkei.l.zxiiro.ca>2010-01-29 14:40:56 -0500
committerzxiiro <zxiiro@enkei.l.zxiiro.ca>2010-01-29 14:40:56 -0500
commit2fe934f4a4be09c85365010c8c8ee9f29e2d45b6 (patch)
treee30e02704801c5a80223660faecada2a533a43ac
parent6299cf8270a735f996fe08b20e95ef6ddadb08c0 (diff)
downloadfreeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.tar.gz
freeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.tar.xz
freeseer-2fe934f4a4be09c85365010c8c8ee9f29e2d45b6.zip
Work in progress on making gst component modular.
-rwxr-xr-xfreeseer.py37
1 files changed, 34 insertions, 3 deletions
diff --git a/freeseer.py b/freeseer.py
index cb6f640..5f80b96 100755
--- a/freeseer.py
+++ b/freeseer.py
@@ -62,7 +62,39 @@ class GSTPlayerWidget(QtGui.QWidget):
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
- self.player = gst.parse_launch(CMD_GSTLAUNCH % CONFIG)
+ self.player = gst.Pipeline("player")
+
+ # GST Video
+ self.vidsrc = gst.element_factory_make("v4l2src", "vidsrc")
+ self.vidtee = gst.element_factory_make("tee", "vidtee")
+ self.vidqueue1 = gst.element_factory_make("queue", "vidqueue1")
+ self.vidqueue2 = gst.element_factory_make("queue", "vidqueue2")
+ self.vidcodec = gst.element_factory_make("theoraenc", "vidcodec")
+ self.vidsink = gst.element_factory_make("autovideosink", "vidsink")
+ #self.vidsink.set_property("sync", "false")
+
+ # GST Sound
+ self.sndsrc = gst.element_factory_make("alsasrc", "sndsrc")
+ self.sndqueue = gst.element_factory_make("queue", "sndqueue")
+ self.audioconvert = gst.element_factory_make("audioconvert", "audioconvert")
+ self.sndcodec = gst.element_factory_make("vorbisenc", "sndcodec")
+
+ # GST Muxer
+ self.mux = gst.element_factory_make("matroskamux", "mux")
+ self.filesink = gst.element_factory_make("filesink", "filesink")
+ self.filesink.set_property("location", CONFIG['FILENAME'])
+
+ # GST Add Components
+ self.player.add(self.vidsrc, self.vidtee, self.vidqueue1, self.vidqueue2, self.vidcodec, self.vidsink)
+ self.player.add(self.sndsrc, self.sndqueue, self.audioconvert, self.sndcodec)
+ self.player.add(self.mux, self.filesink)
+
+ # GST Link Components
+ gst.element_link_many(self.vidsrc, self.vidtee)
+ gst.element_link_many(self.vidtee, self.vidqueue1, self.vidcodec, self.mux)
+ gst.element_link_many(self.vidtee, self.vidqueue2, self.vidsink)
+ gst.element_link_many(self.sndsrc, self.sndqueue, self.audioconvert, self.sndcodec, self.mux)
+ gst.element_link_many(self.mux, self.filesink)
bus = self.player.get_bus()
bus.add_signal_watch()
@@ -98,8 +130,7 @@ class GSTPlayerWidget(QtGui.QWidget):
gst.element_link_many(newsrc, vidtee)
def record(self):
- filesink = self.player.get_by_name("filesink")
- filesink.set_property("location", CONFIG['FILENAME'])
+ self.filesink.set_property("location", CONFIG['FILENAME'])
self.player.set_state(gst.STATE_PLAYING)
def stop(self):