GStreamer and Qt

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

GStreamer and Qt

Russel Winder
Hi,

I see that qt-gstreamer
https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been marked 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 automated
cpp-to-rust program https://github.com/rust-qt/cpp_to_rust . Might this
indicate a route forward for qt-gstreamer?

It appears that Python, via PySide2 and PyQt5, is the only language to
have really successfully created a binding to Qt. Perhaps this is why
there is so much C++ still going on sinve Qt has a huge traction out
there, much more than GTK+.

I was just hoping to be able to use Qt and GStreamer from Rust or D.

--
Russel.
===========================================
Dr Russel Winder      t: +44 20 7585 2200
41 Buckmaster Road    m: +44 7770 465 077
London SW11 1EN, UK   w: www.russel.org.uk


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Olivier Crête-3
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:

> Hi,
>
> I see that qt-gstreamer
> https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been marked
> 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 automated
> cpp-to-rust program https://github.com/rust-qt/cpp_to_rust . Might
> this
> indicate a route forward for qt-gstreamer?
>
> It appears that Python, via PySide2 and PyQt5, is the only language
> to
> have really successfully created a binding to Qt. Perhaps this is why
> there is so much C++ still going on sinve Qt has a huge traction out
> there, much more than GTK+.
>
> I was just hoping to be able to use Qt and GStreamer from Rust or D.
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Olivier Crête
[hidden email]

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Black_13
can these be build for windows?

On Sun, Oct 21, 2018 at 11:15 AM Olivier Crête <[hidden email]> wrote:
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:
> Hi,
>
> I see that qt-gstreamer
> https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been marked
> 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 automated
> cpp-to-rust program https://github.com/rust-qt/cpp_to_rust . Might
> this
> indicate a route forward for qt-gstreamer?
>
> It appears that Python, via PySide2 and PyQt5, is the only language
> to
> have really successfully created a binding to Qt. Perhaps this is why
> there is so much C++ still going on sinve Qt has a huge traction out
> there, much more than GTK+.
>
> I was just hoping to be able to use Qt and GStreamer from Rust or D.
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Olivier Crête
[hidden email]
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Nicolas Dufresne-5
Le dimanche 21 octobre 2018 à 11:21 -0400, blackthirt33n a écrit :
> can these be build for windows?

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

>
> On Sun, Oct 21, 2018 at 11:15 AM Olivier Crête <
> [hidden email]> wrote:
> > 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:
> > > Hi,
> > >
> > > I see that qt-gstreamer
> > > https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been
> > marked
> > > 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
> > automated
> > > cpp-to-rust program https://github.com/rust-qt/cpp_to_rust .
> > Might
> > > this
> > > indicate a route forward for qt-gstreamer?
> > >
> > > It appears that Python, via PySide2 and PyQt5, is the only
> > language
> > > to
> > > have really successfully created a binding to Qt. Perhaps this is
> > why
> > > there is so much C++ still going on sinve Qt has a huge traction
> > out
> > > there, much more than GTK+.
> > >
> > > I was just hoping to be able to use Qt and GStreamer from Rust or
> > D.
> > >
> > > _______________________________________________
> > > gstreamer-devel mailing list
> > > [hidden email]
> > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Denis Shienkov

> can these be build for windows?

> use the C API directly.

We have used the gst directly, using the pure-C API in Qt/QML, even on Windows.

But on Windows there are problem that GST SDK has not a HW codecs/plugins (as I remember).

Denis


21.10.2018 18:54, Nicolas Dufresne пишет:
Le dimanche 21 octobre 2018 à 11:21 -0400, blackthirt33n a écrit :
can these be build for windows?
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

On Sun, Oct 21, 2018 at 11:15 AM Olivier Crête <
[hidden email]> wrote:
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:
Hi,

I see that qt-gstreamer 
https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been
marked
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
automated
cpp-to-rust program https://github.com/rust-qt/cpp_to_rust .
Might
this
indicate a route forward for qt-gstreamer?

It appears that Python, via PySide2 and PyQt5, is the only
language
to
have really successfully created a binding to Qt. Perhaps this is
why
there is so much C++ still going on sinve Qt has a huge traction
out
there, much more than GTK+.

I was just hoping to be able to use Qt and GStreamer from Rust or
D.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Daniel Sperka
I've been using gstreamer API, in a Qt5/C++ application,  directly on mac and windows for a couple of years now (http://habit.ucdavis.edu). 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.

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:(   ) 

I initially tried Qt-Gstreamer, but..
-  I had to make some modifications to the code base to get it to compile on the mac (never attempted it on windows)
- 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?

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. 


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. 

Dan




On Sun, Oct 21, 2018 at 12:21 PM Denis Shienkov <[hidden email]> wrote:

> can these be build for windows?

> use the C API directly.

We have used the gst directly, using the pure-C API in Qt/QML, even on Windows.

But on Windows there are problem that GST SDK has not a HW codecs/plugins (as I remember).

Denis


21.10.2018 18:54, Nicolas Dufresne пишет:
Le dimanche 21 octobre 2018 à 11:21 -0400, blackthirt33n a écrit :
can these be build for windows?
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

On Sun, Oct 21, 2018 at 11:15 AM Olivier Crête <
[hidden email]> wrote:
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:
Hi,

I see that qt-gstreamer 
https://cgit.freedesktop.org/gstreamer/qt-gstreamer has been
marked
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
automated
cpp-to-rust program https://github.com/rust-qt/cpp_to_rust .
Might
this
indicate a route forward for qt-gstreamer?

It appears that Python, via PySide2 and PyQt5, is the only
language
to
have really successfully created a binding to Qt. Perhaps this is
why
there is so much C++ still going on sinve Qt has a huge traction
out
there, much more than GTK+.

I was just hoping to be able to use Qt and GStreamer from Rust or
D.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


--
Daniel J. Sperka, Ph. D.
UC Davis Center for Neuroscience

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Sebastian Dröge-3
On Mon, 2018-10-22 at 08:58 -0700, Daniel Sperka wrote:
>
> 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.

Note that you don't have to use a GMainLoop but you can also integrate
the GstBus with the Qt event loop:
  https://github.com/sdroege/gst-snippets/tree/master/qt5-eventloop

Nowadays (1.14 and newer) you can also get an fd from the GstBus which
always becomes readable when there is a message to read, which
potentially allows nicer integration but I didn't check that for Qt
yet.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (981 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Sebastian Dröge-3
In reply to this post by Russel Winder
On Sun, 2018-10-21 at 15:12 +0100, Russel Winder wrote:
>
> I was just hoping to be able to use Qt and GStreamer from Rust or D.

For both languages you should be able to use the Qt bindings and the
normal, gobject-introspection based GStreamer bindings.

I don't think anybody is ever going to do a second set of bindings on
top of the GStreamer Qt bindings (qt-gstreamer), even if they were not
unmaintained. There's no advantage of that and it's a lot of work.


Why do you think you need to use qt-gstreamer from Rust/D to be able to
use their Qt bindings?

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (981 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GStreamer and Qt

Nirbheek Chauhan
In reply to this post by Denis Shienkov
On Mon, Oct 22, 2018 at 12:57 AM Denis Shienkov
<[hidden email]> wrote:
>
> > can these be build for windows?
>
> > use the C API directly.
>
> We have used the gst directly, using the pure-C API in Qt/QML, even on Windows.
>
> But on Windows there are problem that GST SDK has not a HW codecs/plugins (as I remember).
>

Latest gst-plugins-bad master has Intel MSDK plugins, but they require
gstreamer to be built with MSVC. They will be available in the 1.15.1
preview binary Windows releases.

Cheers,
Nirbheek
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel