<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 29 juill. 2019 19 h 56, pisymbol . <<a href="mailto:pisymbol@gmail.com">pisymbol@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 29, 2019 at 5:51 PM Mathieu Duponchelle <<a href="mailto:mathieu@centricular.com" target="_blank" rel="noreferrer">mathieu@centricular.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">
    I've never seen that, but a test case would probably be helpful :)
    </div></blockquote><div><br></div><div>Not sure what exactly to share:</div><div><br></div><div>Here is the gist of the code:</div><div><br></div><div>class GstPlayerWdiget(Gtk.Box):</div><div>....<br></div><div>       self.play_pipeline = Gst.Pipeline()<br>       factory = self.play_pipeline.get_factory()<br>       gtksink = Gst.ElementFactory.make('gtksink', None)<br>       gtksink.set_property("sync", False)</div><div></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">By disabling the sync, you ask GStreamer to play all frames, even when real-time isn't possible due to cpu limitation. So slow motion on this entirely software pipeline is what you have asked GStreamer.</div><div dir="auto"><br></div><div dir="auto">If you have multiple cores, consider configuring videoconvert to use more then one thread, or add queues at well chosen places (e.g. between decoder and converter).</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br>       self.ghostpad = Gst.GhostPad.new("sink", self.vc.get_static_pad('src'))<br>       self.play_bin.add_pad(self.ghostpad)<br><br>       self.play_pipeline.add(gtksink)<br>       self.play_pipeline.add(self.play_bin)<br>       self.play_bin.link(gtksink)<br>       self.pack_start(gtksink.props.widget, True, True, 0)<br><br>       # We automatically start playing as soon as we are drawn on the screen<br>       bus = self.play_pipeline.get_bus()<br>       bus.add_signal_watch()<br>       bus.enable_sync_message_emission()<br>       bus.connect("sync-message::element", self.on_sync_message)<br>       self.play_pipeline.set_state(Gst.State.PLAYING)<br>       gtksink.props.widget.show_all()</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF">Also, you should always use<br>
    queues after demuxers.<br>
    <br></div></blockquote><div><br></div><div> Threading them out always going to be faster?<br></div><div><br></div><div>-aps<br></div></div></div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></blockquote></div></div></div>