<div dir="ltr">I've been using gstreamer API, in a Qt5/C++ application, directly on mac and windows for a couple of years now (<a href="http://habit.ucdavis.edu">http://habit.ucdavis.edu</a>). I migrated my application to use gstreamer when Qt/Phonon support stopped at Qt5, and also because I wanted to release a windows port of my application.<div><br></div><div>I looked into using other frameworks, but only Gstreamer satisfied all my needs (single code base on windows and mac, built-in codec support for common A/V file formats being the most important). I am able to rely on the stock Gstreamer releases. Packaging an application for release forces some difficult choices on the developer, i.e. whether to package Gstreamer embedded in your application (harder, but the route I chose), or installing full Gstreamer along with your application (easier, but is more easily messed up via end-user actions, and would lead to more support calls that I do not have the time for:( ) </div><div><br></div><div>I initially tried Qt-Gstreamer, but..</div><div>- I had to make some modifications to the code base to get it to compile on the mac (never attempted it on windows)</div><div>- I found the API to be confusing. Gstreamer is a complex API to begin with, and Qt-Gstreamer adds another set of usages/concepts (largely undocumented), has few working examples in the wild, was unsupported, AND (this was the killer) only supported a subset of the Gstreamer API. If you need to manipulate the pipeline in any nontrivial way, you either had to add new methods to the QT-Gstreamer libs OR you had to revert to using the raw Gstreamer API. At that point things get confused and convoluted enough that it begs the question: Why?</div><div><br></div><div>So, for me using the straight Gstreamer API was the only real choice with Qt. There is a steep learning curve with Gstreamer, but there's lots of examples and tutorials out there, and once you start getting it there's a HUGE payoff. I have no comment on any of the other mappings to python, rust, or whatever as they were never an option for me. </div><div><br></div><div><br></div><div>The trickiest part of making it work is getting the GMainLoop integrated into your application. I chose to start a separate thread and call g_main_loop_run from there, while also running a Qt main loop to drive the application. YMMV. </div><div><br></div><div>Dan</div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Oct 21, 2018 at 12:21 PM Denis Shienkov <<a href="mailto:denis.shienkov@gmail.com">denis.shienkov@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<p>> can these be build for windows?</p>
<p>> use the C API directly.</p>
<p>We have used the gst directly, using the pure-C API in Qt/QML,
even on Windows. <br>
</p>
<p>But on Windows there are problem that GST SDK has not a HW
codecs/plugins (as I remember).</p>
<p>Denis<br>
</p>
<br>
<div class="m_-5939841540387137709moz-cite-prefix">21.10.2018 18:54, Nicolas Dufresne
пишет:<br>
</div>
<blockquote type="cite">
<pre>Le dimanche 21 octobre 2018 à 11:21 -0400, blackthirt33n a écrit :
</pre>
<blockquote type="cite">
<pre>can these be build for windows?
</pre>
</blockquote>
<pre>
It should work, it's not part of our build as we don't ship QT (or any
widget toolkit) as part of GStreamer cerbero. Be aware the someone
reported an issue loading this, I'm not sure what is the context. We
will of course investigate and fix if required.
Nicolas
</pre>
<blockquote type="cite">
<pre>
On Sun, Oct 21, 2018 at 11:15 AM Olivier Crête <
<a class="m_-5939841540387137709moz-txt-link-abbreviated" href="mailto:olivier.crete@collabora.com" target="_blank">olivier.crete@collabora.com</a>> wrote:
</pre>
<blockquote type="cite">
<pre>Hi,
Also, QtStreamer is for old style QWidget, if you're doing a QML
application, you should just be using qmlglsink.
And for C++, you don't really need bindings for GStreamer, you can
just
use the C API directly.
Olivier
On Sun, 2018-10-21 at 15:12 +0100, Russel Winder wrote:
</pre>
<blockquote type="cite">
<pre>Hi,
I see that qt-gstreamer
<a class="m_-5939841540387137709moz-txt-link-freetext" href="https://cgit.freedesktop.org/gstreamer/qt-gstreamer" target="_blank">https://cgit.freedesktop.org/gstreamer/qt-gstreamer</a> has been
</pre>
</blockquote>
<pre>marked
</pre>
<blockquote type="cite">
<pre>as
unmaintained. I am guessing mostly on the grounds of it being a
manually created binding.
I see that the rust-qt crates appear to be handled by some
</pre>
</blockquote>
<pre>automated
</pre>
<blockquote type="cite">
<pre>cpp-to-rust program <a class="m_-5939841540387137709moz-txt-link-freetext" href="https://github.com/rust-qt/cpp_to_rust" target="_blank">https://github.com/rust-qt/cpp_to_rust</a> .
</pre>
</blockquote>
<pre>Might
</pre>
<blockquote type="cite">
<pre>this
indicate a route forward for qt-gstreamer?
It appears that Python, via PySide2 and PyQt5, is the only
</pre>
</blockquote>
<pre>language
</pre>
<blockquote type="cite">
<pre>to
have really successfully created a binding to Qt. Perhaps this is
</pre>
</blockquote>
<pre>why
</pre>
<blockquote type="cite">
<pre>there is so much C++ still going on sinve Qt has a huge traction
</pre>
</blockquote>
<pre>out
</pre>
<blockquote type="cite">
<pre>there, much more than GTK+.
I was just hoping to be able to use Qt and GStreamer from Rust or
</pre>
</blockquote>
<pre>D.
</pre>
<blockquote type="cite">
<pre>
_______________________________________________
gstreamer-devel mailing list
<a class="m_-5939841540387137709moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a class="m_-5939841540387137709moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
</blockquote>
<pre>_______________________________________________
gstreamer-devel mailing list
<a class="m_-5939841540387137709moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a class="m_-5939841540387137709moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
<br>
<fieldset class="m_-5939841540387137709mimeAttachmentHeader"></fieldset>
<br>
<pre>_______________________________________________
gstreamer-devel mailing list
<a class="m_-5939841540387137709moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a class="m_-5939841540387137709moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
</blockquote>
</blockquote>
</blockquote>
<br>
</div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Daniel J. Sperka, Ph. D. <br>UC Davis Center for Neuroscience<br></div>