Skip to contentSkip to conversation

qt5base: add optional gstreamer1 support

PATCH New Peter Korsgaard 4 participants 11 messages Oct 21, 2015 – Oct 25, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Indirectly fixes:
http://autobuild.buildroot.net/results/773/773d9996bd3da283eed6b75083b8bab6469d0423/
http://autobuild.buildroot.net/results/069/069f564fde821b55e710fbe93fe30a5cf11a6da5/
http://autobuild.buildroot.net/results/456/456d380f8b4478245e89f711c33fe0c2d23aaa3a/
http://autobuild.buildroot.net/results/7c8/7c8ebfc93a5b11e40251495715d742520b3b8291/

And many more, as qt5multimedia needs qt5base to be built with gstreamer1 support as well.

While qt5 has some gstreamer 0.10 support, it doesn't seem to be used much any more and E.G. the 0.10 fallback code in qt5multimedia is broken so only enable it for the 1.x series.

---
 package/qt5/qt5base/qt5base.mk | 8 ++++++++
 1 file changed, 8 insertions(+)
package/qt5/qt5base/qt5base.mk +8 -0
index 570cd35..4eed126 100644
@@ -147,6 +147,14 @@ QT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)
 
 QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples
 
+# gstreamer 0.10 support is broken in qt5multimedia
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
+QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0
+QT5BASE_DEPENDENCIES   += gst1-plugins-base
+else
+QT5BASE_CONFIGURE_OPTS += -no-gstreamer
+endif
+
 # Build the list of libraries to be installed on the target
 QT5BASE_INSTALL_LIBS_y                                 += Qt5Core
 QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_XCB)        += Qt5XcbQpa
Signature · 1 line
2.1.4
#1 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 8 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Peter" == Peter Korsgaard <[email protected]> writes:

Indirectly fixes:
http://autobuild.buildroot.net/results/773/773d9996bd3da283eed6b75083b8bab6469d0423/
http://autobuild.buildroot.net/results/069/069f564fde821b55e710fbe93fe30a5cf11a6da5/
http://autobuild.buildroot.net/results/456/456d380f8b4478245e89f711c33fe0c2d23aaa3a/
http://autobuild.buildroot.net/results/7c8/7c8ebfc93a5b11e40251495715d742520b3b8291/

Quoted 8 lines

And many more, as qt5multimedia needs qt5base to be built with gstreamer1 support as well.

While qt5 has some gstreamer 0.10 support, it doesn't seem to be used much any more and E.G. the 0.10 fallback code in qt5multimedia is broken so only enable it for the 1.x series.

Committed, thanks.

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
#2 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

In reply to Peter Korsgaard

Peter,

Quoted 6 lines · Peter Korsgaard

Indirectly fixes:
http://autobuild.buildroot.net/results/773/773d9996bd3da283eed6b75083b8bab6469d0423/
http://autobuild.buildroot.net/results/069/069f564fde821b55e710fbe93fe30a5cf11a6da5/
http://autobuild.buildroot.net/results/456/456d380f8b4478245e89f711c33fe0c2d23aaa3a/
http://autobuild.buildroot.net/results/7c8/7c8ebfc93a5b11e40251495715d742520b3b8291/

Quoted 8 lines

And many more, as qt5multimedia needs qt5base to be built with gstreamer1 support as well.

While qt5 has some gstreamer 0.10 support, it doesn't seem to be used much any more and E.G. the 0.10 fallback code in qt5multimedia is broken so only enable it for the 1.x series.

Please also look at http://patchwork.ozlabs.org/patch/504627/ and
http://patchwork.ozlabs.org/patch/504628/ which have some overlap.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 13 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Peter,

Quoted 9 lines · Peter Korsgaard

Indirectly fixes:
http://autobuild.buildroot.net/results/773/773d9996bd3da283eed6b75083b8bab6469d0423/
http://autobuild.buildroot.net/results/069/069f564fde821b55e710fbe93fe30a5cf11a6da5/
http://autobuild.buildroot.net/results/456/456d380f8b4478245e89f711c33fe0c2d23aaa3a/
http://autobuild.buildroot.net/results/7c8/7c8ebfc93a5b11e40251495715d742520b3b8291/

And many more, as qt5multimedia needs qt5base to be built with gstreamer1 support as well.

Quoted 8 lines
Quoted 5 lines

While qt5 has some gstreamer 0.10 support, it doesn't seem to be used much any more and E.G. the 0.10 fallback code in qt5multimedia is broken so only enable it for the 1.x series.

Please also look at http://patchwork.ozlabs.org/patch/504627/ and
http://patchwork.ozlabs.org/patch/504628/ which have some overlap.

The equivalent of 504628 is already in the tree since:

commit a0f3a2b88d27df6f3e8e3d45bd8a0506a3d09455

Author: Beno?t Th?baudeau <[email protected]>
Date:   Thu Aug 27 18:34:14 2015 +0200

So I've marked is as superseeded.

And 504627 looks pretty much like my patch except that it adds gstreamer 0.10 support which I think we shouldn't do (as qt5multimedia doesn't build with it).

Once my patch is a applied I'll mark 504627 as superseeded. I wasn't able to reproduce the pkg-config issue you mentioned.

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
#4 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Peter,

Le 21/10/2015 13:48, Peter Korsgaard a ?crit :

Quoted 25 lines
Quoted 13 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Peter,

Quoted 9 lines · Peter Korsgaard

Indirectly fixes:
http://autobuild.buildroot.net/results/773/773d9996bd3da283eed6b75083b8bab6469d0423/
http://autobuild.buildroot.net/results/069/069f564fde821b55e710fbe93fe30a5cf11a6da5/
http://autobuild.buildroot.net/results/456/456d380f8b4478245e89f711c33fe0c2d23aaa3a/
http://autobuild.buildroot.net/results/7c8/7c8ebfc93a5b11e40251495715d742520b3b8291/

And many more, as qt5multimedia needs qt5base to be built with gstreamer1 support as well.

Quoted 8 lines
Quoted 5 lines

While qt5 has some gstreamer 0.10 support, it doesn't seem to be used much any more and E.G. the 0.10 fallback code in qt5multimedia is broken so only enable it for the 1.x series.

Please also look at http://patchwork.ozlabs.org/patch/504627/ and
http://patchwork.ozlabs.org/patch/504628/ which have some overlap.

The equivalent of 504628 is already in the tree since:

commit a0f3a2b88d27df6f3e8e3d45bd8a0506a3d09455

Quoted 8 lines
Author: Beno?t Th?baudeau <[email protected]>
Date:   Thu Aug 27 18:34:14 2015 +0200

So I've marked is as superseeded.

And 504627 looks pretty much like my patch except that it adds gstreamer 0.10 support which I think we shouldn't do (as qt5multimedia doesn't build with it).

Qt-5.5.0 announce support[1] for both gstreamer-0.10 & gstreamer-1.0. Also note that gstreamer-0.10 is still the Qt default version in case both are present.

Quoted 3 lines

Once my patch is a applied I'll mark 504627 as superseeded. I wasn't able to reproduce the pkg-config issue you mentioned.

You probably missed that qt5base use host pkg-config to detect gstreamer version. As autobuild chroot environment have neither of them they both fail at qt5multimedia install time.

I already report a bug[2] but I was not able to fix it (running out of time). Will Wagner proposed a solution[3] to that issue but he did not spin it into Buildroot and Qt patches yet.

[1] https://wiki.qt.io/New_Features_in_Qt_5.5
[2] https://bugreports.qt.io/browse/QTBUG-48046
[3] https://patchwork.ozlabs.org/patch/504627/

Regards,

Julien Corjon

#5 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Julien" == Julien CORJON <[email protected]> writes:

Hi,

Quoted 9 lines
Quoted 5 lines

So I've marked is as superseeded.

And 504627 looks pretty much like my patch except that it adds gstreamer 0.10 support which I think we shouldn't do (as qt5multimedia doesn't build with it).

Qt-5.5.0 announce support[1] for both gstreamer-0.10 & gstreamer-1.0. Also note that gstreamer-0.10 is still the Qt default version in case both are present.

Yes, but E.G. the gstreamer 0.10 support in qt5multimedia doesn't build, whereas the 1.x support does, and we prefer 1.x over 0.10 elsewhere in Buildroot.

Quoted 7 lines
Quoted 3 lines

Once my patch is a applied I'll mark 504627 as superseeded. I wasn't able to reproduce the pkg-config issue you mentioned.

You probably missed that qt5base use host pkg-config to detect gstreamer version. As autobuild chroot environment have neither of them they both fail at qt5multimedia install time.

Ok, but gstreamer1 pulls in host-pkgconf, so it should be available when qt5base runs the configure step, right?

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
#6 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 9 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Julien" == Julien CORJON <[email protected]> writes:

Hi,

Quoted 5 lines
Quoted 5 lines

So I've marked is as superseeded.

And 504627 looks pretty much like my patch except that it adds gstreamer 0.10 support which I think we shouldn't do (as qt5multimedia doesn't build with it).

Quoted 7 lines
Quoted 3 lines

Qt-5.5.0 announce support[1] for both gstreamer-0.10 & gstreamer-1.0. Also note that gstreamer-0.10 is still the Qt default version in case both are present.

Yes, but E.G. the gstreamer 0.10 support in qt5multimedia doesn't build, whereas the 1.x support does, and we prefer 1.x over 0.10 elsewhere in Buildroot.

This is working fine for me. I have 0.10 building and working on a board.

Quoted 11 lines
Quoted 8 lines
Quoted 4 lines

Once my patch is a applied I'll mark 504627 as superseeded. I wasn't able to reproduce the pkg-config issue you mentioned.

You probably missed that qt5base use host pkg-config to detect gstreamer version. As autobuild chroot environment have neither of them they both fail at qt5multimedia install time.

Ok, but gstreamer1 pulls in host-pkgconf, so it should be available when qt5base runs the configure step, right?

host-pkgconfig is built already, but Qt5.5 just seems to be broken and ignores the passed in path to pkgconf. I've just not had the time to put together a proper patch and try to get it upstream, but it is still on my list.

Signature · 5 lines
------------------------------------------------------------------------
Will Wagner                                     will_wagner at carallon.com
Development Manager                      Office Tel: +44 (0)20 7371 2032
Carallon Ltd, Studio G20, Shepherds Building, Rockley Rd, London W14 0DA
------------------------------------------------------------------------
#7 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Will" == Will Wagner <[email protected]> writes:

Hi,

Quoted 7 lines · Peter Korsgaard
Quoted 4 lines

Yes, but E.G. the gstreamer 0.10 support in qt5multimedia doesn't build, whereas the 1.x support does, and we prefer 1.x over 0.10 elsewhere in Buildroot.

This is working fine for me. I have 0.10 building and working on a board.

So you don't see these compile errors?

https://patchwork.ozlabs.org/patch/533653/

For one, I see src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp calling gst_video_connector_get_type that isn't defined anywhere.

Quoted 7 lines
Quoted 2 lines

Ok, but gstreamer1 pulls in host-pkgconf, so it should be available when qt5base runs the configure step, right?

host-pkgconfig is built already, but Qt5.5 just seems to be broken and ignores the passed in path to pkgconf. I've just not had the time to put together a proper patch and try to get it upstream, but it is still on my list.

That can presumably be fixed by just ensuring that HOST_DIR/usr/bin is in the path (using TARGET_MAKE_ENV / TARGET_CONFIGURE_OPTS)?

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
#8 lore raw

PATCH 1/2 qt5base: add optional gstreamer1 support

Quoted 11 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Will" == Will Wagner <[email protected]> writes:

Hi,

Quoted 7 lines · Peter Korsgaard
Quoted 4 lines

Yes, but E.G. the gstreamer 0.10 support in qt5multimedia doesn't build, whereas the 1.x support does, and we prefer 1.x over 0.10 elsewhere in Buildroot.

This is working fine for me. I have 0.10 building and working on a board.

Quoted 7 lines

So you don't see these compile errors?

https://patchwork.ozlabs.org/patch/533653/

For one, I see src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp calling gst_video_connector_get_type that isn't defined anywhere.

No I don't see that. I'll take a look and see what is happening.

Quoted 4 lines
Quoted 3 lines
Quoted 3 lines

Ok, but gstreamer1 pulls in host-pkgconf, so it should be available when qt5base runs the configure step, right?

Quoted 8 lines
Quoted 4 lines

host-pkgconfig is built already, but Qt5.5 just seems to be broken and ignores the passed in path to pkgconf. I've just not had the time to put together a proper patch and try to get it upstream, but it is still on my list.

That can presumably be fixed by just ensuring that HOST_DIR/usr/bin is in the path (using TARGET_MAKE_ENV / TARGET_CONFIGURE_OPTS)?

I hadn't thought of that, but yes presumably that would work.

Regards
Will

Signature · 5 lines
------------------------------------------------------------------------
Will Wagner                                     will_wagner at carallon.com
Development Manager                      Office Tel: +44 (0)20 7371 2032
Carallon Ltd, Studio G20, Shepherds Building, Rockley Rd, London W14 0DA
------------------------------------------------------------------------
#9 lore raw

PATCH 2/2 qt5multimedia: drop broken gstreamer 0.10 support

In reply to Peter Korsgaard

The gstreamer 0.10 support code seems to have bitrotten as the build fails with undefined references to various functions:

.obj/qgstreameraudiodecodersession.o: In function `QGstreamerAudioDecoderSession::read()':
qgstreameraudiodecodersession.cpp:(.text+0x13a0): undefined reference to `QGstUtils::audioFormatForBuffer(_GstBuffer*)'
collect2: error: ld returned 1 exit status
Makefile:111: recipe for target '../../../../plugins/mediaservice/libgstaudiodecoder.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstaudiodecoder.so] Error 1
Makefile:45: recipe for target 'sub-audiodecoder-make_first' failed
make[5]: *** [sub-audiodecoder-make_first] Error 2
make[5]: *** Waiting for unfinished jobs....
.obj/qgstreamercapturesession.o: In function `QGstreamerCaptureSession::probeBuffer(_GstBuffer*) [clone .part.30]':
qgstreamercapturesession.cpp:(.text+0x3fc8): undefined reference to `QGstUtils::bufferToImage(_GstBuffer*)'
collect2: error: ld returned 1 exit status
Makefile:153: recipe for target '../../../../plugins/mediaservice/libgstmediacapture.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstmediacapture.so] Error 1
Makefile:95: recipe for target 'sub-mediacapture-make_first' failed
make[5]: *** [sub-mediacapture-make_first] Error 2
.obj/qgstreamerplayersession.o: In function `QGstreamerPlayerSession::QGstreamerPlayerSession(QObject*)':
qgstreamerplayersession.cpp:(.text+0xecc): undefined reference to gst_video_connector_get_type' .obj/qgstreamerplayersession.o: In function QGstreamerPlayerSession::processBusMessage(QGstreamerMessage const&)':
qgstreamerplayersession.cpp:(.text+0x5b4c): undefined reference to `QGstUtils::gstTagListToMap(_GstStructure const*)'
collect2: error: ld returned 1 exit status
Makefile:129: recipe for target '../../../../plugins/mediaservice/libgstmediaplayer.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstmediaplayer.so] Error 1
Makefile:70: recipe for target 'sub-mediaplayer-make_first' failed
make[5]: *** [sub-mediaplayer-make_first] Error 2

---
 package/qt5/qt5multimedia/qt5multimedia.mk | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
package/qt5/qt5multimedia/qt5multimedia.mk +1 -4
index 50fdd57..df1395c 100644
@@ -18,9 +18,6 @@ QT5MULTIMEDIA_LICENSE = Commercial license
 QT5MULTIMEDIA_REDISTRIBUTE = NO
 endif
 
-ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y)
-QT5MULTIMEDIA_DEPENDENCIES += gst-plugins-base
-endif
 ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
 QT5MULTIMEDIA_DEPENDENCIES += gst1-plugins-base
 endif
@@ -43,7 +40,7 @@ define QT5MULTIMEDIA_INSTALL_STAGING_CMDS
 endef
 
 ifeq ($(BR2_STATIC_LIBS),)
-ifneq ($(BR2_PACKAGE_GST_PLUGINS_BASE)$(BR2_PACKAGE_GST1_PLUGINS_BASE),)
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
 define QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB
 	cp -dpf $(STAGING_DIR)/usr/lib/libqgsttools*.so.* $(TARGET_DIR)/usr/lib
 endef
Signature · 1 line
2.1.4
#10 lore raw

PATCH 2/2 qt5multimedia: drop broken gstreamer 0.10 support

Quoted 30 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Peter" == Peter Korsgaard <[email protected]> writes:

The gstreamer 0.10 support code seems to have bitrotten as the build fails with undefined references to various functions:

.obj/qgstreameraudiodecodersession.o: In function `QGstreamerAudioDecoderSession::read()':
qgstreameraudiodecodersession.cpp:(.text+0x13a0): undefined reference to `QGstUtils::audioFormatForBuffer(_GstBuffer*)'
collect2: error: ld returned 1 exit status
Makefile:111: recipe for target '../../../../plugins/mediaservice/libgstaudiodecoder.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstaudiodecoder.so] Error 1
Makefile:45: recipe for target 'sub-audiodecoder-make_first' failed
make[5]: *** [sub-audiodecoder-make_first] Error 2
make[5]: *** Waiting for unfinished jobs....
.obj/qgstreamercapturesession.o: In function `QGstreamerCaptureSession::probeBuffer(_GstBuffer*) [clone .part.30]':
qgstreamercapturesession.cpp:(.text+0x3fc8): undefined reference to `QGstUtils::bufferToImage(_GstBuffer*)'
collect2: error: ld returned 1 exit status
Makefile:153: recipe for target '../../../../plugins/mediaservice/libgstmediacapture.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstmediacapture.so] Error 1
Makefile:95: recipe for target 'sub-mediacapture-make_first' failed
make[5]: *** [sub-mediacapture-make_first] Error 2
.obj/qgstreamerplayersession.o: In function `QGstreamerPlayerSession::QGstreamerPlayerSession(QObject*)':
qgstreamerplayersession.cpp:(.text+0xecc): undefined reference to gst_video_connector_get_type' .obj/qgstreamerplayersession.o: In function QGstreamerPlayerSession::processBusMessage(QGstreamerMessage const&)':
qgstreamerplayersession.cpp:(.text+0x5b4c): undefined reference to `QGstUtils::gstTagListToMap(_GstStructure const*)'
collect2: error: ld returned 1 exit status
Makefile:129: recipe for target '../../../../plugins/mediaservice/libgstmediaplayer.so' failed make[6]: *** [../../../../plugins/mediaservice/libgstmediaplayer.so] Error 1
Makefile:70: recipe for target 'sub-mediaplayer-make_first' failed
make[5]: *** [sub-mediaplayer-make_first] Error 2

Quoted 1 line

Committed, thanks.

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard