From f4cd6ec1bfed02def8502bc8373b1fe0d35acca8 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Thu, 23 Apr 2015 06:49:07 +0200 Subject: remove unsuccessful experiments, add intervideo-based working example --- voctocore/experiments/startuptest/startuptest.py | 59 ------------------------ voctocore/experiments/startuptest/testbin.py | 41 ---------------- 2 files changed, 100 deletions(-) delete mode 100755 voctocore/experiments/startuptest/startuptest.py delete mode 100644 voctocore/experiments/startuptest/testbin.py (limited to 'voctocore/experiments/startuptest') diff --git a/voctocore/experiments/startuptest/startuptest.py b/voctocore/experiments/startuptest/startuptest.py deleted file mode 100755 index 58e676a..0000000 --- a/voctocore/experiments/startuptest/startuptest.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/python3 - -# Example for the startup-problem -# -# The Pipeline will start but the test-image will be still, as long as no -# ShmSink at /tmp/grabber-v is present (run ../test-grabber-src.sh in another shell) -# -# Even though the ShmSrc is not linked to anything and logically not required for -# the videotestsrc or the ximagesink, the whole pipeline won't startup when this element -# fails to start. -# -# once the pipeline is running, it does not matter what happens to the ShmSink on the -# other end, because the TestBin filters all EOS and ERROR Messages coming from the ShmSrc, -# but somehow this is not enough to make the pipeline start in an error-condition.. -# - -import gi, time - -# import GStreamer and GTK-Helper classes -gi.require_version('Gst', '1.0') -from gi.repository import GLib, Gst, GObject - -# init GObject before importing local classes -GObject.threads_init() -Gst.init(None) - -from testbin import TestBin - -class Example: - def __init__(self): - self.mainloop = GObject.MainLoop() - self.pipeline = Gst.Pipeline() - - self.src = Gst.ElementFactory.make('videotestsrc', None) - self.sink = Gst.ElementFactory.make('ximagesink', None) - - self.testbin = TestBin() - - # Add elements to pipeline - self.pipeline.add(self.testbin) - self.pipeline.add(self.src) - self.pipeline.add(self.sink) - - self.src.link(self.sink) - - def run(self): - print("PAUSED") - self.pipeline.set_state(Gst.State.PAUSED) - time.sleep(0.1) - print("PLAYING") - self.pipeline.set_state(Gst.State.PLAYING) - self.mainloop.run() - - def kill(self): - self.pipeline.set_state(Gst.State.NULL) - self.mainloop.quit() - -example = Example() -example.run() diff --git a/voctocore/experiments/startuptest/testbin.py b/voctocore/experiments/startuptest/testbin.py deleted file mode 100644 index e234b55..0000000 --- a/voctocore/experiments/startuptest/testbin.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/python3 -import time -from gi.repository import GLib, Gst - -class TestBin(Gst.Bin): - def __init__(self): - super().__init__() - self.set_name('testbin') - - # Create elements - self.shmsrc = Gst.ElementFactory.make('shmsrc', None) - - # Add elements to Bin - self.add(self.shmsrc) - - self.shmsrc.set_property('socket-path', '/tmp/grabber-v') - self.shmsrc.set_property('is-live', True) - self.shmsrc.set_property('do-timestamp', True) - - # Install pad probes - self.shmsrc.get_static_pad('src').add_probe(Gst.PadProbeType.BLOCK | Gst.PadProbeType.EVENT_DOWNSTREAM, self.event_probe, None) - self.shmsrc.get_static_pad('src').add_probe(Gst.PadProbeType.BLOCK | Gst.PadProbeType.BUFFER, self.data_probe, None) - - def do_handle_message(self, msg): - if msg.type == Gst.MessageType.ERROR: - print("do_handle_message(): dropping error") - return - - print("do_handle_message()", msg.src, msg.type) - Gst.Bin.do_handle_message(self, msg) - - def event_probe(self, pad, info, ud): - e = info.get_event() - if e.type == Gst.EventType.EOS: - return Gst.PadProbeReturn.DROP - - return Gst.PadProbeReturn.PASS - - def data_probe(self, pad, info, ud): - self.last_buffer_arrived = time.time() - return Gst.PadProbeReturn.PASS -- cgit v1.2.3