<div dir="ltr"><div><div><div><div>Hi,<br><br></div>I'm trying to write the buffer timestamps (buf.pts) of a webcam steam to a text file. I use appsink and a little callable function. This works fine when I stream h.264 (apart from non-monotonical timestamps). But, it fails if I stream raw or mpeg. I see no errors or warnings, but the stream freezes/pauses after two frames (i.e. 2 timestamps written to file). When streaming h.264 h264parse is necessary otherwise it too freezes after 2 frames. I tried using videoparse, but this crashes python, and jpegparse does not make any difference. <br><br></div>Does anyone have advice?<br><br></div>Scripts (unfortunately not gst-launch since I do not know how to combine that with the callback)<br>- - - - - - - - - - - - - - - - - -<br><br></div>Streaming h.264 (WORKS):<br><br>

<p style="margin:0px;text-indent:0px"><span style="font-family:monospace,monospace">class Webcam_ts_h264:</span></p><span style="font-family:monospace,monospace">
</span><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def __init__(self, video_dev='/dev/video0', fps=15):</span></p><div style="margin-left:40px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        """</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        """</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        ts_log_fname = 'ts_test.log'</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px">                 </p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log = open(ts_log_fname, 'w')</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log.write('n_buf, buf.pts\n')</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.n_frames = 0</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline = Gst.Pipeline()</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px">        </p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        def on_new_sample(appsink):</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            """</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            Function called from the pipeline by appsink.</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            Writes the timestampes of frame capture to a log file.</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            """</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            # Get the buffer</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            smp = appsink.emit('pull-sample')</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            buf = smp.get_buffer()</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            self.n_frames += 1</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            self.ts_log.write('%d,%0.9f\n' % </span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">                              (self.n_frames, np.float64(1e-9) * buf.pts))</span></p><div style="margin-left:120px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            return Gst.FlowReturn.OK</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Video source:</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src = Gst.ElementFactory.make('v4l2src', None)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.set_property('device', video_dev)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.set_property('do-timestamp', 'true')</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Formats available from C920 camera: </span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #   'image/jpeg', 'video/x-h264', 'video/x-raw'</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        vid_caps = Gst.Caps.from_string('video/x-h264,'</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">                                        'width=%d,height=%d,'</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">                                        'framerate=%d/1' % (640, 480, fps))</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter = Gst.ElementFactory.make('capsfilter', None)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter.set_property('caps', vid_caps)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_parse = Gst.ElementFactory.make('h264parse', None)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink = Gst.ElementFactory.make('appsink', None)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Setting properties of appsink</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Tell sink to emit signals</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.set_property('emit-signals', True)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.set_property('sync', False)  # No sync</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Connect appsink to my function (writing timestamps)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.connect('new-sample', on_new_sample)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Add elements to the pipeline</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.v4l2src)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.vid_filter)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.vid_parse)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.ts_sink)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # link</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.link(self.vid_filter)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter.link(self.vid_parse)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_parse.link(self.ts_sink)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px">                      </p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def run(self):</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.set_state(Gst.State.PLAYING)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def quit(self):</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.set_state(Gst.State.NULL)</span></p><div style="margin-left:80px"><span style="font-family:monospace,monospace">
</span></div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log.close()</span></p><p style="margin:0px 0px 0px 80px;text-indent:0px"><br><span style="font-family:monospace,monospace"></span></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;text-indent:0px"><span style="font-family:arial,helvetica,sans-serif">Streaming raw (FAILS):</span><span style="font-family:monospace,monospace"></span></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;text-indent:0px"><br>

</p><p style="margin:0px;text-indent:0px"><span style="font-family:monospace,monospace">class Webcam_ts_raw:</span></p><span style="font-family:monospace,monospace">
</span><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def __init__(self, video_dev='/dev/video0', fps=15):</span></p><div style="margin-left:40px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        """</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        """</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        ts_log_fname = 'ts_test.log'</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px">                 </p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log = open(ts_log_fname, 'w')</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log.write('n_buf, buf.pts\n')</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.n_frames = 0</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline = Gst.Pipeline()</span></p><div style="margin-left:80px">
</div><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px">        </p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        def on_new_sample(appsink):</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            """</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            Function called from the pipeline by appsink.</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            Writes the timestampes of frame capture to a log file.</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            """</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            # Get the buffer</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            smp = appsink.emit('pull-sample')</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            buf = smp.get_buffer()</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            self.n_frames += 1</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            self.ts_log.write('%d,%0.9f\n' % </span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">                              (self.n_frames, np.float64(1e-9) * buf.pts))</span></p><div style="margin-left:120px">
</div><p style="margin:0px 0px 0px 120px;text-indent:0px"><span style="font-family:monospace,monospace">            return Gst.FlowReturn.OK</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Video source:</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src = Gst.ElementFactory.make('v4l2src', None)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.set_property('device', video_dev)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.set_property('do-timestamp', 'true')</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Formats available from C920 camera: </span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #   'image/jpeg', 'video/x-h264', 'video/x-raw'</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        vid_caps = Gst.Caps.from_string('video/x-raw,'</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">                                        'width=%d,height=%d,'</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">                                        'framerate=%d/1' % (640, 480, fps))</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter = Gst.ElementFactory.make('capsfilter', None)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter.set_property('caps', vid_caps)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #self.vid_parse = Gst.ElementFactory.make('jpegparse', None)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink = Gst.ElementFactory.make('appsink', None)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Setting properties of appsink</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Tell sink to emit signals</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.set_property('emit-signals', True)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.set_property('sync', False)  # No sync</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Connect appsink to my function (writing timestamps)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_sink.connect('new-sample', on_new_sample)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # Add elements to the pipeline</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.v4l2src)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.vid_filter)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #self.pipeline.add(self.vid_parse)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.add(self.ts_sink)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        # link</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.v4l2src.link(self.vid_filter)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.vid_filter.link(self.ts_sink)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #self.vid_filter.link(self.vid_parse)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        #self.vid_parse.link(self.ts_sink)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px">                      </p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def run(self):</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.set_state(Gst.State.PLAYING)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace"><br></span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 40px;text-indent:0px"><span style="font-family:monospace,monospace">    def quit(self):</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.pipeline.set_state(Gst.State.NULL)</span></p><div style="margin-left:80px">
</div><p style="margin:0px 0px 0px 80px;text-indent:0px"><span style="font-family:monospace,monospace">        self.ts_log.close()      </span></p><br><div><div><div><div>Best regards,<br></div><div>Hjalmar<br></div></div></div></div></div>