diff mbox series

[v3,1/1] package/qt6: add qt6 multimedia

Message ID 20240920160500.18551-1-baxiche@gmail.com
State New
Headers show
Series [v3,1/1] package/qt6: add qt6 multimedia | expand

Commit Message

baxiche su Sept. 20, 2024, 4:05 p.m. UTC
Signed-off-by: baxiche su <baxiche@gmail.com>
---
 DEVELOPERS                                   |   3 +
 package/qt6/Config.in                        |   1 +
 package/qt6/qt6multimedia/Config.in          | 117 ++++++++++++++++
 package/qt6/qt6multimedia/qt6multimedia.hash |  26 ++++
 package/qt6/qt6multimedia/qt6multimedia.mk   | 137 +++++++++++++++++++
 5 files changed, 284 insertions(+)
 create mode 100644 package/qt6/qt6multimedia/Config.in
 create mode 100644 package/qt6/qt6multimedia/qt6multimedia.hash
 create mode 100644 package/qt6/qt6multimedia/qt6multimedia.mk

Comments

Roy Kollen Svendsen Sept. 22, 2024, 9:21 a.m. UTC | #1
Hi Baxiche, Hi Thomas,

Baxiche, good to see you are working on getting this module upstream! I'll
do some testing and dig deeper into the details later.

I'm a but unsure about the non-qt dependencies, especially the kernel
feature dependencies.

You can also probably drop more of the license information, that does not
apply to things that don't end up on target.

I think it would be nice to be able to enable the examples for testing. The
same goes for the other Qt6 packages. Have you looked into that?

What do you think about adding options to enable the tests, Thomas?

But until I get the time to do some testing and checking, here are some
things I noticed while reading through your patch:

fre. 20. sep. 2024 kl. 18:06 skrev baxiche su <baxiche@gmail.com>:

> Signed-off-by: baxiche su <baxiche@gmail.com>
> ---
>  DEVELOPERS                                   |   3 +
>  package/qt6/Config.in                        |   1 +
>  package/qt6/qt6multimedia/Config.in          | 117 ++++++++++++++++
>  package/qt6/qt6multimedia/qt6multimedia.hash |  26 ++++
>  package/qt6/qt6multimedia/qt6multimedia.mk   | 137 +++++++++++++++++++
>  5 files changed, 284 insertions(+)
>  create mode 100644 package/qt6/qt6multimedia/Config.in
>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.hash
>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index ea4ee3377f..5b6f60444d 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -343,6 +343,9 @@ F:  package/tcpdump/
>  F:     package/ti-uim/
>  F:     package/uhubctl/
>
> +N:     Baxiche Su <baxiche@gmail.com>
> +F:     package/qt6/qt6multimedia
>

The common pattern is to use a slash at the end of a directory entry:

package/qt6/qt6multimedia/


> +
>  N:     Ben Boeckel <mathstuf@gmail.com>
>  F:     package/taskd/
>
> diff --git a/package/qt6/Config.in b/package/qt6/Config.in
> index 4cbb60322c..debf4f4733 100644
> --- a/package/qt6/Config.in
> +++ b/package/qt6/Config.in
> @@ -48,6 +48,7 @@ source "package/qt6/qt6core5compat/Config.in"
>  source "package/qt6/qt6declarative/Config.in"
>  source "package/qt6/qt6languageserver/Config.in"
>  source "package/qt6/qt6mqtt/Config.in"
> +source "package/qt6/qt6multimedia/Config.in"
>  source "package/qt6/qt6opcua/Config.in"
>  source "package/qt6/qt6scxml/Config.in"
>  source "package/qt6/qt6serialbus/Config.in"
> diff --git a/package/qt6/qt6multimedia/Config.in
> b/package/qt6/qt6multimedia/Config.in
> new file mode 100644
> index 0000000000..1aebef840d
> --- /dev/null
> +++ b/package/qt6/qt6multimedia/Config.in
> @@ -0,0 +1,117 @@
> +config BR2_PACKAGE_QT6MULTIMEDIA
> +       bool "qt6multimedia"
> +       select BR2_PACKAGE_QT6BASE_GUI
> +       select BR2_PACKAGE_QT6BASE_NETWORK
> +       select BR2_PACKAGE_QT6SHADERTOOLS
> +
> +       help
> +         Qt Multimedia is an add-on module that provides
> +         a rich set of QML types and C++ classes to handle
> +         multimedia content. It contains an easy to use API
> +         for playing back audio and video files and rendering
> +         those on screen, as well as a comprehensive API for
> +         recording audio and video from the system's cameras
> +         and microphones.
>

You wrap the help text at 62 characters i think. I think it is better to
wrap it at 62 + 2 + tab(8 chars). See manual.

> +
> +         https://doc.qt.io/qt-6/qtmultimedia-index.html
> +
> +if BR2_PACKAGE_QT6MULTIMEDIA
> +
> +comment "alsa support requires disabling pulseaudio"
> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_ALSA
> +       bool "alsa support"
> +       # qt6-multimedia audio backend requires selection
> +       # of either PulseAudio or ALSA.
>

Maybe this could be reflected in a choice instead?


> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
> +       select BR2_PACKAGE_ALSA_LIB
> +       help
> +         This option select Alsa as audio backend.
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
> +       bool "ffmpeg plugin"
>

Does it make sense to make this a choice between ffmpeg and gstreamer
instead?


> +       # qt6-multimedia ffmpeg plugin needs
> +       # qt6base-concurrent, PulseAudio and ffmpeg-swcale.
>

I think this comment just repeats the info bellow. Can we drop it?


> +       select BR2_PACKAGE_QT6BASE_CONCURRENT
> +       select BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
> +       select BR2_PACKAGE_FFMPEG
> +       select BR2_PACKAGE_FFMPEG_SWSCALE
> +       select BR2_PACKAGE_PULSEAUDIO
>

I also like when the select statements are sorted alphabetically. Have you
ordered them this way intentionally?


> +       help
> +         This option enables ffmpeg media backend
> +
> +if BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
> +
> +comment "VAAPI support needs Linux DMA buffer feature"
> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
> +
>


> +config BR2_PACKAGE_QT6MULTIMEDIA_VAAPI
> +       bool "vaapi support"
> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>
+       select BR2_PACKAGE_LIBVA
> +       # ffmpeg-vaapi support needs qt6base-opengl
> +       select BR2_PACKAGE_QT6BASE_OPENGL
> +       help
> +         This option enables the vaapi support.
> +endif
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
> +       bool "gstreamer plugin"
> +       # gstreamer 1.x and gst-plugins-base-app are required
> +       # for gstreamer support in qt6-multimedia
> +       select BR2_PACKAGE_GSTREAMER1
> +       select BR2_PACKAGE_GST1_PLUGINS_BASE
> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
> +       help
> +         This option enables gstreamer media backend
> +
> +if BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
> +
> +comment "GStreamer OpenGL support needs an OpenGL-capable backend"
> +       depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_OPENGL
> +       bool "opengl support"
> +       depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
> +       help
> +         This option enables gstreamer-opengl support
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_PHOTOGRAPHY
> +       bool "photography support"
> +       select BR2_PACKAGE_GST1_PLUGINS_BAD
> +       help
> +         This option enables gstreamer-photography support
> +
> +endif
> +
> +comment "Linux DMA buffer support needs DMA buffer feature of libgbm"
> +       depends on !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
> +       bool "linux dma buffer support"
> +       depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
>
+       # qt6 configure script needs EGL to check
> +       # for linux dma buffer support
> +       depends on BR2_PACKAGE_HAS_LIBEGL
> +       help
> +         This option enables the linux dma buffer support
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L
> +       bool "v4l support"
> +       help
> +         This option enables the video for linux support
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>
+       bool "pulseaudio support"
> +       select BR2_PACKAGE_PULSEAUDIO
> +       help
> +         This option select PulseAudio as audio backend.
> +
> +config BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO
> +       bool "spatial audio module"
> +       help
> +         This option enables the Qt6SpatialAudio library.
> +
> +endif
> diff --git a/package/qt6/qt6multimedia/qt6multimedia.hash
> b/package/qt6/qt6multimedia/qt6multimedia.hash
> new file mode 100644
> index 0000000000..b63aedc1d9
> --- /dev/null
> +++ b/package/qt6/qt6multimedia/qt6multimedia.hash
> @@ -0,0 +1,26 @@
> +# Hash from:
> https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256
> +sha256
> <https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256+sha256>
> 8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3
> qtmultimedia-everywhere-src-6.7.2.tar.xz
> +
> +# Hashes for license files
> +sha256  f32fb3b417a194167cfad068223fc975ba96c5960513a10f66a3c28720aec1df
> LICENSES/BSD-2-Clause.txt
> +sha256  9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce
> LICENSES/BSD-3-Clause.txt
> +sha256  1f1b677d26ab73e159a55c3a914cf12d888e18a9d0d469fedab4aa6e5a48b1c0
> LICENSES/BSD-Source-Code.txt
> +sha256  84c6ef3ea9e3254a54d0acf5d3e0c61ae011b8fef7dd6940591cf060e6380a8f
> LICENSES/BSL-1.0.txt
> +sha256  110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4
> LICENSES/GFDL-1.3-no-invariants-only.txt
> +sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643
> LICENSES/GPL-2.0-only.txt
> +sha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903
> LICENSES/GPL-3.0-only.txt
> +sha256  7658542977bfdced9e1059a6c934ce4281de76d103b831007b825917dc62511a
> LICENSES/IJG.txt
> +sha256  f2ec607f67bb0dd3053b49835b02110d5cd0f8eb6da3aac4dc0b142a6b299be9
> LICENSES/ISC.txt
> +sha256  fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb
> LICENSES/LGPL-2.1-or-later.txt
> +sha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768
> LICENSES/LGPL-3.0-only.txt
> +sha256  b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0
> LICENSES/MIT.txt
> +sha256  66a3107d5ad6a058aab753eaac2047ccb2ed0e39465dd0fe5844da3e300d5172
> LICENSES/MPL-2.0.txt
> +sha256  40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2
> LICENSES/Qt-GPL-exception-1.0.txt
> +sha256  bfb1112d49db5b1daecdfef24bd7e2f3ea0bafb33aa67aa0ab51e2bf8407c03d
> LICENSES/Zlib.txt
> +sha256  85da7c29c2d2f2e6b3116b1219584cb513474cab797b3312a779be4c2181e51e
> src/3rdparty/eigen/COPYING.BSD
> +sha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85
> src/3rdparty/eigen/COPYING.MPL2
> +sha256  8b69cf3ac3ddd34df478c4ae6eaacf5e6c63ea7ee6403c8dad97e4d1438bc3c4
> src/3rdparty/eigen/COPYRIGHTS
> +sha256  b522f821df94da3bad917e98ef04817b3af421c3b8c23e8247ae7e517b289934
> src/3rdparty/pffft/COPYRIGHTS
> +sha256  a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88
> src/3rdparty/pffft/LICENSE
> +sha256  2513c5ad87ce9e7feed2c9a159d336f0a0d12ff93adcd411f7a15a1ab678f7ac
> src/3rdparty/resonance-audio/COPYRIGHTS
> +sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
> src/3rdparty/resonance-audio/LICENSE
> diff --git a/package/qt6/qt6multimedia/qt6multimedia.mk
> b/package/qt6/qt6multimedia/qt6multimedia.mk
> new file mode 100644
> index 0000000000..ec81abc1de
> --- /dev/null
> +++ b/package/qt6/qt6multimedia/qt6multimedia.mk
> @@ -0,0 +1,137 @@
>
> +################################################################################
> +#
> +# qt6multimedia
> +#
>
> +################################################################################
> +
> +QT6MULTIMEDIA_VERSION = $(QT6_VERSION)
> +QT6MULTIMEDIA_SITE = $(QT6_SITE)
> +QT6MULTIMEDIA_SOURCE =
> qtmultimedia-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6MULTIMEDIA_VERSION).tar.xz
> +QT6MULTIMEDIA_INSTALL_STAGING = YES
> +QT6MULTIMEDIA_SUPPORTS_IN_SOURCE_BUILD = NO
> +QT6MULTIMEDIA_CMAKE_BACKEND = ninja
> +
> +QT6MULTIMEDIA_LICENSE = \
> +    BSD-3-Clause (buildsystem, examples, pfft,  snippets), \
> +    GFDL-1.3-no-invariants (docs), \
> +    GPL-3.0 (tests), \
> +    GPL-3.0 with Qt-GPL-exception-1.0 (utils), \
> +    LGPL-3.0 or GPL-2.0 or GPL-3.0 (modules, plugins)
> +
> +QT6MULTIMEDIA_LICENSE_FILES = \
> +    LICENSES/BSD-3-Clause.txt \
> +    LICENSES/GFDL-1.3-no-invariants-only.txt \
> +    LICENSES/GPL-2.0-only.txt \
> +    LICENSES/GPL-3.0-only.txt \
> +    LICENSES/LGPL-3.0-only.txt \
> +    LICENSES/Qt-GPL-exception-1.0.txt \
> +
> +QT6MULTIMEDIA_DEPENDENCIES = \
> +    qt6base \
> +    qt6shadertools
> +
> +QT6MULTIMEDIA_CONF_OPTS = \
> +    -DQT_HOST_PATH=$(HOST_DIR) \
> +    -DQT_BUILD_EXAMPLES=OFF \
> +    -DQT_BUILD_TESTS=OFF \
>
+    -DFEATURE_alsa=OFF \
>

I think is better to gather all code related to one option in one place. So
this should be moved down into the ifeq-statement for alsa.
The same goes for the other options.

+    -DFEATURE_ffmpeg=OFF \
> +    -DFEATURE_gstreamer=OFF \
> +    -DFEATURE_gstreamer_1_0=OFF \
> +    -DFEATURE_gstreamer_app=OFF \
> +    -DFEATURE_gstreamer_gl=OFF \
> +    -DFEATURE_gstreamer_photography=OFF \
> +    -DFEATURE_linux_dmabuf=OFF \
> +    -DFEATURE_linux_v4l=OFF \
> +    -DFEATURE_pulseaudio=OFF \
> +    -DFEATURE_spatialaudio=OFF \
> +    -DFEATURE_spatialaudio_quick3d=OFF \
> +    -DFEATURE_vaapi=OFF
> +
> +# for multimedia quick module
> +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y)
> +QT6MULTIMEDIA_DEPENDENCIES += qt6declarative
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_ALSA),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=ON
> +QT6MULTIMEDIA_DEPENDENCIES += alsa-lib
>

Gather all code related to the alsa option here:

else
QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=OFF


> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_ffmpeg=ON
> +QT6MULTIMEDIA_DEPENDENCIES += ffmpeg
> +QT6MULTIMEDIA_LICENSE += , \
> +    BSL-1.0 (ffmpeg-boost), \
> +    IJG (ffmpeg-libjpeg), \
> +    LGPL-2.1+ and BSD-3-Clause and BSD-2-Clause and BSD-Source-Code and
> ISC and MIT and MPL-2.0 (ffmpeg), \
> +    Zlib (ffmpeg-zlib)
> +QT6MULTIMEDIA_LICENSE_FILES += \
> +    LICENSES/BSD-2-Clause.txt \
> +    LICENSES/BSD-Source-Code.txt \
> +    LICENSES/BSL-1.0.txt \
> +    LICENSES/IJG.txt \
> +    LICENSES/ISC.txt \
> +    LICENSES/LGPL-2.1-or-later.txt \
> +    LICENSES/MIT.txt \
> +    LICENSES/MPL-2.0.txt \
> +    LICENSES/Zlib.txt
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER),y)
> +QT6MULTIMEDIA_CONF_OPTS += \
> +    -DFEATURE_gstreamer=ON \
> +    -DFEATURE_gstreamer_1_0=ON \
> +    -DFEATURE_gstreamer_app=ON
> +QT6MULTIMEDIA_DEPENDENCIES += gstreamer1 gst1-plugins-base
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GST_PLUGINS_PHOTOGRAPHY),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_gstreamer_photography=ON
> +QT6MULTIMEDIA_DEPENDENCIES += gst1-plugins-bad
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_dmabuf=ON
> +QT6MULTIMEDIA_DEPENDENCIES += libgbm libegl
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_v4l=ON
> +QT6MULTIMEDIA_DEPENDENCIES += linux
>

I was probably wrong here in my last comment, I don't think the dependency
on linux is necessary... I have no experience with dependencies on kernel
config, so you should ask Thomas or someone else about how dependencies on
linux config options are handled. Maybe this is relevant?:

https://www.marcusfolkesson.se/til/buildroot-libfoo-linux-config-fixup/


> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_pulseaudio=ON
> +QT6MULTIMEDIA_DEPENDENCIES += pulseaudio
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio=ON
> +QT6MULTIMEDIA_LICENSE += , \
> +    Apache-2.0 (resonance-audio, eigen), \
> +    LGPL-3.0 or GPL-3.0 (resonance-audio, spatialaudio,
> spatialaudioquick3d), \
> +    MPL-2.0 and BSD-3-Clause (eigen)
> +QT6MULTIMEDIA_LICENSE_FILES += \
> +    LICENSES/MPL-2.0.txt \
> +    src/3rdparty/eigen/COPYING.BSD \
> +    src/3rdparty/eigen/COPYING.MPL2 \
> +    src/3rdparty/eigen/COPYRIGHTS \
> +    src/3rdparty/pffft/COPYRIGHTS \
> +    src/3rdparty/pffft/LICENSE \
> +    src/3rdparty/resonance-audio/COPYRIGHTS \
> +    src/3rdparty/resonance-audio/LICENSE
> +
> +# for spatialaudio quick3d module
> +ifeq ($(BR2_PACKAGE_QT6QUICK3D),y)
> +QT6MULTIMEDIA_DEPENDENCIES += qt6quick3d
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio_quick3d=ON
> +endif
> +endif
> +
> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_VAAPI),y)
> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_vaapi=ON
> +QT6MULTIMEDIA_DEPENDENCIES += libva
> +endif
> +
> +$(eval $(cmake-package))
> --
> 2.34.1
>
>
baxiche su Sept. 22, 2024, 2:29 p.m. UTC | #2
Hi Roy,

I'm sorry for the formatting issue with DEVELOPERS and the Config.in file.
I will fix them in the next commit.

Regarding the qt6multimedia.mk file:

1. The reason I don't make FFmpeg/GStreamer a choice, is because
qt6-multimedia can be built with these two packages, and the media backend
can be chosen at runtime, or even built without these packages.

2. The reason I don't make ALSA/PulseAudio a choice is that qt6-multimedia
can be built without these packages.

3. I personally prefer to set all qt6-multimedia FEATURE to OFF at the
beginning of the .mk file and set it to ON if the option is chosen. I have
seen other qt6 packages do this. If you prefer to gather all the code
related to one option in one place, I will make that change in the next
commit as well.
Thanks for reviewing my work.

Baxiche
Roy Kollen Svendsen Sept. 24, 2024, 8:02 a.m. UTC | #3
Hi baxiche,

søn. 22. sep. 2024 kl. 16:30 skrev baxiche su <baxiche@gmail.com>:

> Hi Roy,
>
> I'm sorry for the formatting issue with DEVELOPERS and the Config.in file.
> I will fix them in the next commit.
>
> Regarding the qt6multimedia.mk file:
>
> 1. The reason I don't make FFmpeg/GStreamer a choice, is because
> qt6-multimedia can be built with these two packages, and the media
> backend can be chosen at runtime, or even built without these packages.
>
> 2. The reason I don't make ALSA/PulseAudio a choice is that qt6-multimedia
> can be built without these packages.
>
>
Ok, makes sense.


> 3. I personally prefer to set all qt6-multimedia FEATURE to OFF at the
> beginning of the .mk file and set it to ON if the option is chosen. I have
> seen other qt6 packages do this. If you prefer to gather all the code
> related to one option in one place, I will make that change in the next
> commit as well.
>

I don't think this is enforced but it seems very common according to this
search in the package directory:

grep -rzoP '(?s)ifeq.*?endif' . | sed 's/\x0/\n\n/g'

Thanks for reviewing my work.
>
> Baxiche
>

Regards,
Roy
Roy Kollen Svendsen Sept. 24, 2024, 8:34 p.m. UTC | #4
Hi baxiche,

I did some testing.

The buildfailed when i tried to enable everything except for alsa:

>>> qt6multimedia 6.7.2 Configuring
(mkdir -p
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
&& cd
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
&& rm -f CMakeCache.txt &&
PATH="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin:/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/sbin:/home/roy/.cargo/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/home/roy/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/depot_tools:/home/roy/.gem/ruby/3.0.0/bin:/home/roy/.local/bin"
 /usr/bin/cmake
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/
-G"Ninja"
-DCMAKE_MAKE_PROGRAM="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/ninja"
-DCMAKE_TOOLCHAIN_FILE="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/share/buildroot/toolchainfile.cmake"
-DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_INSTALL_RUNSTATEDIR="/run"
-DCMAKE_COLOR_MAKEFILE=OFF -DBUILD_DOC=OFF -DBUILD_DOCS=OFF
-DBUILD_EXAMPLE=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF -DBUILD_TESTS=OFF
-DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON
 -DQT_HOST_PATH=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host
-DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF -DFEATURE_alsa=OFF
-DFEATURE_ffmpeg=OFF -DFEATURE_gstreamer=OFF -DFEATURE_gstreamer_1_0=OFF
-DFEATURE_gstreamer_app=OFF -DFEATURE_gstreamer_gl=OFF
-DFEATURE_gstreamer_photography=OFF -DFEATURE_linux_dmabuf=OFF
-DFEATURE_linux_v4l=OFF -DFEATURE_pulseaudio=OFF -DFEATURE_spatialaudio=OFF
-DFEATURE_spatialaudio_quick3d=OFF -DFEATURE_vaapi=OFF -DFEATURE_ffmpeg=ON
-DFEATURE_gstreamer=ON -DFEATURE_gstreamer_1_0=ON
-DFEATURE_gstreamer_app=ON  -DFEATURE_linux_dmabuf=ON
-DFEATURE_linux_v4l=ON -DFEATURE_pulseaudio=ON -DFEATURE_spatialaudio=ON
-DFEATURE_vaapi=ON )
-- The CXX compiler identification is GNU 13.3.0
-- The C compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler:
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
- skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler:
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-gcc
- skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE
-- Performing Test HAVE_EGL
-- Performing Test HAVE_EGL - Success
-- Found EGL:
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include
(found version "1.5")
-- Performing Test HAVE_GLESv2
-- Performing Test HAVE_GLESv2 - Success
CMake Warning at
src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake:38 (message):
  QT_FEATURE_vaapi is ON but FFmpeg includes VAAPI and dynamic symbols
  resolve is enabled.
Call Stack (most recent call first):
  src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake:182
(qt_internal_multimedia_check_ffmpeg_stubs_configuration)
  src/plugins/multimedia/ffmpeg/CMakeLists.txt:95
(qt_internal_multimedia_add_ffmpeg_stubs)



-- Configuration summary shown below. It has also been written to
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/config.summary
-- Configure with --log-level=STATUS or higher to increase CMake's message
verbosity. The log level does not persist across reconfigurations.

-- Configure summary:

Qt Multimedia:
  Spatial Audio .......................... yes
  Spatial Audio (Quick3D) ................ no
  Low level Audio Backend:
    ALSA (experimental) .................. no
    PulseAudio ........................... yes
    MMRenderer ........................... no
    CoreAudio ............................ no
    Windows Media SDK .................... no
    Open SLES (Android) .................. no
    Web Assembly ......................... no
  Plugin:
    GStreamer 1.0 ........................ yes
    FFmpeg ............................... yes
    MMRenderer ........................... no
    AVFoundation ......................... no
    Windows Media Foundation ............. no
  Hardware acceleration and features:
    Video for Linux ...................... yes
    VAAPI support ........................ yes
    Linux DMA buffer support ............. yes
    VideoToolbox ......................... no


-- Configuring done (3.7s)
-- Generating done (0.2s)
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_DOC
    BUILD_DOCS
    BUILD_EXAMPLE
    BUILD_EXAMPLES
    BUILD_TEST
    BUILD_TESTS
    CMAKE_COLOR_MAKEFILE


-- Build files have been written to:
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build
>>> qt6multimedia 6.7.2 Building
GIT_DIR=.
PATH="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin:/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/sbin:/home/roy/.cargo/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/home/roy/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/depot_tools:/home/roy/.gem/ruby/3.0.0/bin:/home/roy/.local/bin"
 /usr/bin/cmake --build
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
-j13
[77/204] Building CXX object
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
FAILED:
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
--sysroot=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot
-DMultimedia_EXPORTS -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT
-DQT_BUILD_MULTIMEDIA_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
-DQT_DISABLE_DEPRECATED_UP_TO=0x050000
-DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_MOC_COMPAT
-DQT_NETWORK_LIB -DQT_NO_AS_CONST -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII
-DQT_NO_CONTEXTLESS_CONNECT=1 -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS
-DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE
-DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000
-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia/Multimedia_autogen/include
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/audio
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/camera
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/controls
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/platform
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/playback
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/recording
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/video
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2/QtMultimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/mkspecs/linux-g++
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtNetwork
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2/QtCore
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2/QtGui
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0
-D_FORTIFY_SOURCE=1 -DNDEBUG -O2 -std=c++17 -fPIC -fvisibility=hidden
-fvisibility-inlines-hidden -Wall -Wextra -fno-exceptions
-Wsuggest-override -MD -MT
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
-MF
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o.d
-o
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
-c
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosource.cpp
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosource.cpp:566:10:
fatal error: moc_qpulseaudiosource_p.cpp: Ingen slik fil eller filkatalog
  566 | #include "moc_qpulseaudiosource_p.cpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[78/204] Building CXX object
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
FAILED:
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
--sysroot=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot
-DMultimedia_EXPORTS -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT
-DQT_BUILD_MULTIMEDIA_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
-DQT_DISABLE_DEPRECATED_UP_TO=0x050000
-DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_MOC_COMPAT
-DQT_NETWORK_LIB -DQT_NO_AS_CONST -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII
-DQT_NO_CONTEXTLESS_CONNECT=1 -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS
-DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE
-DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000
-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia/Multimedia_autogen/include
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/audio
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/camera
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/controls
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/platform
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/playback
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/recording
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/video
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2/QtMultimedia
-I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/mkspecs/linux-g++
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtNetwork
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2/QtCore
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2
-isystem
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2/QtGui
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0
-D_FORTIFY_SOURCE=1 -DNDEBUG -O2 -std=c++17 -fPIC -fvisibility=hidden
-fvisibility-inlines-hidden -Wall -Wextra -fno-exceptions
-Wsuggest-override -MD -MT
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
-MF
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o.d
-o
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
-c
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosink.cpp
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosink.cpp:749:10:
fatal error: moc_qpulseaudiosink_p.cpp: Ingen slik fil eller filkatalog
  749 | #include "moc_qpulseaudiosink_p.cpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[89/203] Building CXX object
src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qaudioengine_pulse.cpp.o
ninja: build stopped: subcommand failed.
make[2]: *** [package/pkg-generic.mk:289:
/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/.stamp_built]
Error 1
make[1]: *** [Makefile:83: _all] Error 2
make[1]: Leaving directory
'/home/roy/hymatek/connexi-touchpanel-firmware/buildroot'
make: *** [Makefile:86: ex7xxm/qt6multimedia-reconfigure] Error 2

søn. 22. sep. 2024 kl. 11:21 skrev Roy Kollen Svendsen <
roykollensvendsen@gmail.com>:

> Hi Baxiche, Hi Thomas,
>
> Baxiche, good to see you are working on getting this module upstream! I'll
> do some testing and dig deeper into the details later.
>
> I'm a but unsure about the non-qt dependencies, especially the kernel
> feature dependencies.
>
> You can also probably drop more of the license information, that does not
> apply to things that don't end up on target.
>
> I think it would be nice to be able to enable the examples for testing.
> The same goes for the other Qt6 packages. Have you looked into that?
>
> What do you think about adding options to enable the tests, Thomas?
>
> But until I get the time to do some testing and checking, here are some
> things I noticed while reading through your patch:
>
> fre. 20. sep. 2024 kl. 18:06 skrev baxiche su <baxiche@gmail.com>:
>
>> Signed-off-by: baxiche su <baxiche@gmail.com>
>> ---
>>  DEVELOPERS                                   |   3 +
>>  package/qt6/Config.in                        |   1 +
>>  package/qt6/qt6multimedia/Config.in          | 117 ++++++++++++++++
>>  package/qt6/qt6multimedia/qt6multimedia.hash |  26 ++++
>>  package/qt6/qt6multimedia/qt6multimedia.mk   | 137 +++++++++++++++++++
>>  5 files changed, 284 insertions(+)
>>  create mode 100644 package/qt6/qt6multimedia/Config.in
>>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.hash
>>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.mk
>>
>> diff --git a/DEVELOPERS b/DEVELOPERS
>> index ea4ee3377f..5b6f60444d 100644
>> --- a/DEVELOPERS
>> +++ b/DEVELOPERS
>> @@ -343,6 +343,9 @@ F:  package/tcpdump/
>>  F:     package/ti-uim/
>>  F:     package/uhubctl/
>>
>> +N:     Baxiche Su <baxiche@gmail.com>
>> +F:     package/qt6/qt6multimedia
>>
>
> The common pattern is to use a slash at the end of a directory entry:
>
> package/qt6/qt6multimedia/
>
>
>> +
>>  N:     Ben Boeckel <mathstuf@gmail.com>
>>  F:     package/taskd/
>>
>> diff --git a/package/qt6/Config.in b/package/qt6/Config.in
>> index 4cbb60322c..debf4f4733 100644
>> --- a/package/qt6/Config.in
>> +++ b/package/qt6/Config.in
>> @@ -48,6 +48,7 @@ source "package/qt6/qt6core5compat/Config.in"
>>  source "package/qt6/qt6declarative/Config.in"
>>  source "package/qt6/qt6languageserver/Config.in"
>>  source "package/qt6/qt6mqtt/Config.in"
>> +source "package/qt6/qt6multimedia/Config.in"
>>  source "package/qt6/qt6opcua/Config.in"
>>  source "package/qt6/qt6scxml/Config.in"
>>  source "package/qt6/qt6serialbus/Config.in"
>> diff --git a/package/qt6/qt6multimedia/Config.in
>> b/package/qt6/qt6multimedia/Config.in
>> new file mode 100644
>> index 0000000000..1aebef840d
>> --- /dev/null
>> +++ b/package/qt6/qt6multimedia/Config.in
>> @@ -0,0 +1,117 @@
>> +config BR2_PACKAGE_QT6MULTIMEDIA
>> +       bool "qt6multimedia"
>> +       select BR2_PACKAGE_QT6BASE_GUI
>> +       select BR2_PACKAGE_QT6BASE_NETWORK
>> +       select BR2_PACKAGE_QT6SHADERTOOLS
>> +
>> +       help
>> +         Qt Multimedia is an add-on module that provides
>> +         a rich set of QML types and C++ classes to handle
>> +         multimedia content. It contains an easy to use API
>> +         for playing back audio and video files and rendering
>> +         those on screen, as well as a comprehensive API for
>> +         recording audio and video from the system's cameras
>> +         and microphones.
>>
>
> You wrap the help text at 62 characters i think. I think it is better to
> wrap it at 62 + 2 + tab(8 chars). See manual.
>
>> +
>> +         https://doc.qt.io/qt-6/qtmultimedia-index.html
>> +
>> +if BR2_PACKAGE_QT6MULTIMEDIA
>> +
>> +comment "alsa support requires disabling pulseaudio"
>> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_ALSA
>> +       bool "alsa support"
>> +       # qt6-multimedia audio backend requires selection
>> +       # of either PulseAudio or ALSA.
>>
>
> Maybe this could be reflected in a choice instead?
>
>
>> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>> +       select BR2_PACKAGE_ALSA_LIB
>> +       help
>> +         This option select Alsa as audio backend.
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
>> +       bool "ffmpeg plugin"
>>
>
> Does it make sense to make this a choice between ffmpeg and gstreamer
> instead?
>
>
>> +       # qt6-multimedia ffmpeg plugin needs
>> +       # qt6base-concurrent, PulseAudio and ffmpeg-swcale.
>>
>
> I think this comment just repeats the info bellow. Can we drop it?
>
>
>> +       select BR2_PACKAGE_QT6BASE_CONCURRENT
>> +       select BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>> +       select BR2_PACKAGE_FFMPEG
>> +       select BR2_PACKAGE_FFMPEG_SWSCALE
>> +       select BR2_PACKAGE_PULSEAUDIO
>>
>
> I also like when the select statements are sorted alphabetically. Have you
> ordered them this way intentionally?
>
>
>> +       help
>> +         This option enables ffmpeg media backend
>> +
>> +if BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
>> +
>> +comment "VAAPI support needs Linux DMA buffer feature"
>> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>> +
>>
>
>
>> +config BR2_PACKAGE_QT6MULTIMEDIA_VAAPI
>> +       bool "vaapi support"
>> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>>
> +       select BR2_PACKAGE_LIBVA
>> +       # ffmpeg-vaapi support needs qt6base-opengl
>> +       select BR2_PACKAGE_QT6BASE_OPENGL
>> +       help
>> +         This option enables the vaapi support.
>> +endif
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
>> +       bool "gstreamer plugin"
>> +       # gstreamer 1.x and gst-plugins-base-app are required
>> +       # for gstreamer support in qt6-multimedia
>> +       select BR2_PACKAGE_GSTREAMER1
>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE
>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
>> +       help
>> +         This option enables gstreamer media backend
>> +
>> +if BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
>> +
>> +comment "GStreamer OpenGL support needs an OpenGL-capable backend"
>> +       depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_OPENGL
>> +       bool "opengl support"
>> +       depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
>> +       help
>> +         This option enables gstreamer-opengl support
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_PHOTOGRAPHY
>> +       bool "photography support"
>> +       select BR2_PACKAGE_GST1_PLUGINS_BAD
>> +       help
>> +         This option enables gstreamer-photography support
>> +
>> +endif
>> +
>> +comment "Linux DMA buffer support needs DMA buffer feature of libgbm"
>> +       depends on !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>> +       bool "linux dma buffer support"
>> +       depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
>>
> +       # qt6 configure script needs EGL to check
>> +       # for linux dma buffer support
>> +       depends on BR2_PACKAGE_HAS_LIBEGL
>> +       help
>> +         This option enables the linux dma buffer support
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L
>> +       bool "v4l support"
>> +       help
>> +         This option enables the video for linux support
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>>
> +       bool "pulseaudio support"
>> +       select BR2_PACKAGE_PULSEAUDIO
>> +       help
>> +         This option select PulseAudio as audio backend.
>> +
>> +config BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO
>> +       bool "spatial audio module"
>> +       help
>> +         This option enables the Qt6SpatialAudio library.
>> +
>> +endif
>> diff --git a/package/qt6/qt6multimedia/qt6multimedia.hash
>> b/package/qt6/qt6multimedia/qt6multimedia.hash
>> new file mode 100644
>> index 0000000000..b63aedc1d9
>> --- /dev/null
>> +++ b/package/qt6/qt6multimedia/qt6multimedia.hash
>> @@ -0,0 +1,26 @@
>> +# Hash from:
>> https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256
>> +sha256
>> <https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256+sha256>
>> 8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3
>> qtmultimedia-everywhere-src-6.7.2.tar.xz
>> +
>> +# Hashes for license files
>> +sha256
>> f32fb3b417a194167cfad068223fc975ba96c5960513a10f66a3c28720aec1df
>> LICENSES/BSD-2-Clause.txt
>> +sha256
>> 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce
>> LICENSES/BSD-3-Clause.txt
>> +sha256
>> 1f1b677d26ab73e159a55c3a914cf12d888e18a9d0d469fedab4aa6e5a48b1c0
>> LICENSES/BSD-Source-Code.txt
>> +sha256
>> 84c6ef3ea9e3254a54d0acf5d3e0c61ae011b8fef7dd6940591cf060e6380a8f
>> LICENSES/BSL-1.0.txt
>> +sha256
>> 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4
>> LICENSES/GFDL-1.3-no-invariants-only.txt
>> +sha256
>> 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643
>> LICENSES/GPL-2.0-only.txt
>> +sha256
>> 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903
>> LICENSES/GPL-3.0-only.txt
>> +sha256
>> 7658542977bfdced9e1059a6c934ce4281de76d103b831007b825917dc62511a
>> LICENSES/IJG.txt
>> +sha256
>> f2ec607f67bb0dd3053b49835b02110d5cd0f8eb6da3aac4dc0b142a6b299be9
>> LICENSES/ISC.txt
>> +sha256
>> fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb
>> LICENSES/LGPL-2.1-or-later.txt
>> +sha256
>> da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768
>> LICENSES/LGPL-3.0-only.txt
>> +sha256
>> b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0
>> LICENSES/MIT.txt
>> +sha256
>> 66a3107d5ad6a058aab753eaac2047ccb2ed0e39465dd0fe5844da3e300d5172
>> LICENSES/MPL-2.0.txt
>> +sha256
>> 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2
>> LICENSES/Qt-GPL-exception-1.0.txt
>> +sha256
>> bfb1112d49db5b1daecdfef24bd7e2f3ea0bafb33aa67aa0ab51e2bf8407c03d
>> LICENSES/Zlib.txt
>> +sha256
>> 85da7c29c2d2f2e6b3116b1219584cb513474cab797b3312a779be4c2181e51e
>> src/3rdparty/eigen/COPYING.BSD
>> +sha256
>> fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85
>> src/3rdparty/eigen/COPYING.MPL2
>> +sha256
>> 8b69cf3ac3ddd34df478c4ae6eaacf5e6c63ea7ee6403c8dad97e4d1438bc3c4
>> src/3rdparty/eigen/COPYRIGHTS
>> +sha256
>> b522f821df94da3bad917e98ef04817b3af421c3b8c23e8247ae7e517b289934
>> src/3rdparty/pffft/COPYRIGHTS
>> +sha256
>> a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88
>> src/3rdparty/pffft/LICENSE
>> +sha256
>> 2513c5ad87ce9e7feed2c9a159d336f0a0d12ff93adcd411f7a15a1ab678f7ac
>> src/3rdparty/resonance-audio/COPYRIGHTS
>> +sha256
>> cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
>> src/3rdparty/resonance-audio/LICENSE
>> diff --git a/package/qt6/qt6multimedia/qt6multimedia.mk
>> b/package/qt6/qt6multimedia/qt6multimedia.mk
>> new file mode 100644
>> index 0000000000..ec81abc1de
>> --- /dev/null
>> +++ b/package/qt6/qt6multimedia/qt6multimedia.mk
>> @@ -0,0 +1,137 @@
>>
>> +################################################################################
>> +#
>> +# qt6multimedia
>> +#
>>
>> +################################################################################
>> +
>> +QT6MULTIMEDIA_VERSION = $(QT6_VERSION)
>> +QT6MULTIMEDIA_SITE = $(QT6_SITE)
>> +QT6MULTIMEDIA_SOURCE =
>> qtmultimedia-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6MULTIMEDIA_VERSION).tar.xz
>> +QT6MULTIMEDIA_INSTALL_STAGING = YES
>> +QT6MULTIMEDIA_SUPPORTS_IN_SOURCE_BUILD = NO
>> +QT6MULTIMEDIA_CMAKE_BACKEND = ninja
>> +
>> +QT6MULTIMEDIA_LICENSE = \
>> +    BSD-3-Clause (buildsystem, examples, pfft,  snippets), \
>> +    GFDL-1.3-no-invariants (docs), \
>> +    GPL-3.0 (tests), \
>> +    GPL-3.0 with Qt-GPL-exception-1.0 (utils), \
>> +    LGPL-3.0 or GPL-2.0 or GPL-3.0 (modules, plugins)
>> +
>> +QT6MULTIMEDIA_LICENSE_FILES = \
>> +    LICENSES/BSD-3-Clause.txt \
>> +    LICENSES/GFDL-1.3-no-invariants-only.txt \
>> +    LICENSES/GPL-2.0-only.txt \
>> +    LICENSES/GPL-3.0-only.txt \
>> +    LICENSES/LGPL-3.0-only.txt \
>> +    LICENSES/Qt-GPL-exception-1.0.txt \
>> +
>> +QT6MULTIMEDIA_DEPENDENCIES = \
>> +    qt6base \
>> +    qt6shadertools
>> +
>> +QT6MULTIMEDIA_CONF_OPTS = \
>> +    -DQT_HOST_PATH=$(HOST_DIR) \
>> +    -DQT_BUILD_EXAMPLES=OFF \
>> +    -DQT_BUILD_TESTS=OFF \
>>
> +    -DFEATURE_alsa=OFF \
>>
>
> I think is better to gather all code related to one option in one place.
> So this should be moved down into the ifeq-statement for alsa.
> The same goes for the other options.
>
> +    -DFEATURE_ffmpeg=OFF \
>> +    -DFEATURE_gstreamer=OFF \
>> +    -DFEATURE_gstreamer_1_0=OFF \
>> +    -DFEATURE_gstreamer_app=OFF \
>> +    -DFEATURE_gstreamer_gl=OFF \
>> +    -DFEATURE_gstreamer_photography=OFF \
>> +    -DFEATURE_linux_dmabuf=OFF \
>> +    -DFEATURE_linux_v4l=OFF \
>> +    -DFEATURE_pulseaudio=OFF \
>> +    -DFEATURE_spatialaudio=OFF \
>> +    -DFEATURE_spatialaudio_quick3d=OFF \
>> +    -DFEATURE_vaapi=OFF
>> +
>> +# for multimedia quick module
>> +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y)
>> +QT6MULTIMEDIA_DEPENDENCIES += qt6declarative
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_ALSA),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += alsa-lib
>>
>
> Gather all code related to the alsa option here:
>
> else
> QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=OFF
>
>
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_ffmpeg=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += ffmpeg
>> +QT6MULTIMEDIA_LICENSE += , \
>> +    BSL-1.0 (ffmpeg-boost), \
>> +    IJG (ffmpeg-libjpeg), \
>> +    LGPL-2.1+ and BSD-3-Clause and BSD-2-Clause and BSD-Source-Code and
>> ISC and MIT and MPL-2.0 (ffmpeg), \
>> +    Zlib (ffmpeg-zlib)
>> +QT6MULTIMEDIA_LICENSE_FILES += \
>> +    LICENSES/BSD-2-Clause.txt \
>> +    LICENSES/BSD-Source-Code.txt \
>> +    LICENSES/BSL-1.0.txt \
>> +    LICENSES/IJG.txt \
>> +    LICENSES/ISC.txt \
>> +    LICENSES/LGPL-2.1-or-later.txt \
>> +    LICENSES/MIT.txt \
>> +    LICENSES/MPL-2.0.txt \
>> +    LICENSES/Zlib.txt
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER),y)
>> +QT6MULTIMEDIA_CONF_OPTS += \
>> +    -DFEATURE_gstreamer=ON \
>> +    -DFEATURE_gstreamer_1_0=ON \
>> +    -DFEATURE_gstreamer_app=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += gstreamer1 gst1-plugins-base
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GST_PLUGINS_PHOTOGRAPHY),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_gstreamer_photography=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += gst1-plugins-bad
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_dmabuf=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += libgbm libegl
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_v4l=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += linux
>>
>
> I was probably wrong here in my last comment, I don't think the dependency
> on linux is necessary... I have no experience with dependencies on kernel
> config, so you should ask Thomas or someone else about how dependencies on
> linux config options are handled. Maybe this is relevant?:
>
> https://www.marcusfolkesson.se/til/buildroot-libfoo-linux-config-fixup/
>
>
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_pulseaudio=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += pulseaudio
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio=ON
>> +QT6MULTIMEDIA_LICENSE += , \
>> +    Apache-2.0 (resonance-audio, eigen), \
>> +    LGPL-3.0 or GPL-3.0 (resonance-audio, spatialaudio,
>> spatialaudioquick3d), \
>> +    MPL-2.0 and BSD-3-Clause (eigen)
>> +QT6MULTIMEDIA_LICENSE_FILES += \
>> +    LICENSES/MPL-2.0.txt \
>> +    src/3rdparty/eigen/COPYING.BSD \
>> +    src/3rdparty/eigen/COPYING.MPL2 \
>> +    src/3rdparty/eigen/COPYRIGHTS \
>> +    src/3rdparty/pffft/COPYRIGHTS \
>> +    src/3rdparty/pffft/LICENSE \
>> +    src/3rdparty/resonance-audio/COPYRIGHTS \
>> +    src/3rdparty/resonance-audio/LICENSE
>> +
>> +# for spatialaudio quick3d module
>> +ifeq ($(BR2_PACKAGE_QT6QUICK3D),y)
>> +QT6MULTIMEDIA_DEPENDENCIES += qt6quick3d
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio_quick3d=ON
>> +endif
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_VAAPI),y)
>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_vaapi=ON
>> +QT6MULTIMEDIA_DEPENDENCIES += libva
>> +endif
>> +
>> +$(eval $(cmake-package))
>> --
>> 2.34.1
>>
>>
Roy Kollen Svendsen Sept. 24, 2024, 8:43 p.m. UTC | #5
Hi baxiche,

I also found some formatting errors:

[roy@precision7530-arch-roy buildroot]$ ./utils/docker-run make
check-package
package/qt6/qt6multimedia/Config.in:8: help text: <tab><2 spaces><62 chars>
(https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:8: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:9: help text: <tab><2 spaces><62 chars>
(https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:9: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:10: help text: <tab><2 spaces><62
chars> (https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:10: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:11: help text: <tab><2 spaces><62
chars> (https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:11: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:12: help text: <tab><2 spaces><62
chars> (https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:12: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:13: help text: <tab><2 spaces><62
chars> (https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:13: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:14: help text: <tab><2 spaces><62
chars> (https://nightly.buildroot.org/#writing-rules-config-in)
package/qt6/qt6multimedia/Config.in:25: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:29: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:34: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:41: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:55: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:61: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:66: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:95: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:98: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:103: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:109: line contains trailing whitespace
package/qt6/qt6multimedia/Config.in:114: line contains trailing whitespace
package/qt6/qt6multimedia/qt6multimedia.mk:15: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:16: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:17: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:18: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:19: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:22: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:23: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:24: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:25: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:26: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:27: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:27: remove trailing backslash
package/qt6/qt6multimedia/qt6multimedia.mk:30: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:31: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:34: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:35: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:36: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:37: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:38: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:39: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:40: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:41: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:42: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:43: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:44: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:45: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:46: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:47: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:48: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:49: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:65: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:66: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:67: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:68: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:70: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:71: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:72: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:73: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:74: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:75: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:76: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:77: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:78: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:83: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:84: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:85: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:85: line contains trailing
whitespace
package/qt6/qt6multimedia/qt6multimedia.mk:112: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:113: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:114: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:116: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:117: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:118: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:119: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:120: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:121: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:122: expected indent with tabs
package/qt6/qt6multimedia/qt6multimedia.mk:123: expected indent with tabs

426759 lines processed
83 warnings generated
make: *** [Makefile:1263: check-package] Error 1

tir. 24. sep. 2024 kl. 22:34 skrev Roy Kollen Svendsen <
roykollensvendsen@gmail.com>:

> Hi baxiche,
>
> I did some testing.
>
> The buildfailed when i tried to enable everything except for alsa:
>
> >>> qt6multimedia 6.7.2 Configuring
> (mkdir -p
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
> && cd
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
> && rm -f CMakeCache.txt &&
> PATH="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin:/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/sbin:/home/roy/.cargo/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/home/roy/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/depot_tools:/home/roy/.gem/ruby/3.0.0/bin:/home/roy/.local/bin"
>  /usr/bin/cmake
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/
> -G"Ninja"
> -DCMAKE_MAKE_PROGRAM="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/ninja"
> -DCMAKE_TOOLCHAIN_FILE="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/share/buildroot/toolchainfile.cmake"
> -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_INSTALL_RUNSTATEDIR="/run"
> -DCMAKE_COLOR_MAKEFILE=OFF -DBUILD_DOC=OFF -DBUILD_DOCS=OFF
> -DBUILD_EXAMPLE=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF -DBUILD_TESTS=OFF
> -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON
>  -DQT_HOST_PATH=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host
> -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF -DFEATURE_alsa=OFF
> -DFEATURE_ffmpeg=OFF -DFEATURE_gstreamer=OFF -DFEATURE_gstreamer_1_0=OFF
> -DFEATURE_gstreamer_app=OFF -DFEATURE_gstreamer_gl=OFF
> -DFEATURE_gstreamer_photography=OFF -DFEATURE_linux_dmabuf=OFF
> -DFEATURE_linux_v4l=OFF -DFEATURE_pulseaudio=OFF -DFEATURE_spatialaudio=OFF
> -DFEATURE_spatialaudio_quick3d=OFF -DFEATURE_vaapi=OFF -DFEATURE_ffmpeg=ON
> -DFEATURE_gstreamer=ON -DFEATURE_gstreamer_1_0=ON
> -DFEATURE_gstreamer_app=ON  -DFEATURE_linux_dmabuf=ON
> -DFEATURE_linux_v4l=ON -DFEATURE_pulseaudio=ON -DFEATURE_spatialaudio=ON
> -DFEATURE_vaapi=ON )
> -- The CXX compiler identification is GNU 13.3.0
> -- The C compiler identification is GNU 13.3.0
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Check for working CXX compiler:
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
> - skipped
> -- Detecting CXX compile features
> -- Detecting CXX compile features - done
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working C compiler:
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-gcc
> - skipped
> -- Detecting C compile features
> -- Detecting C compile features - done
> -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
> -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
> -- Found Threads: TRUE
> -- Performing Test HAVE_STDATOMIC
> -- Performing Test HAVE_STDATOMIC - Success
> -- Found WrapAtomic: TRUE
> -- Performing Test HAVE_EGL
> -- Performing Test HAVE_EGL - Success
> -- Found EGL:
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include
> (found version "1.5")
> -- Performing Test HAVE_GLESv2
> -- Performing Test HAVE_GLESv2 - Success
> CMake Warning at
> src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake:38 (message):
>   QT_FEATURE_vaapi is ON but FFmpeg includes VAAPI and dynamic symbols
>   resolve is enabled.
> Call Stack (most recent call first):
>   src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake:182
> (qt_internal_multimedia_check_ffmpeg_stubs_configuration)
>   src/plugins/multimedia/ffmpeg/CMakeLists.txt:95
> (qt_internal_multimedia_add_ffmpeg_stubs)
>
>
>
> -- Configuration summary shown below. It has also been written to
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/config.summary
> -- Configure with --log-level=STATUS or higher to increase CMake's message
> verbosity. The log level does not persist across reconfigurations.
>
> -- Configure summary:
>
> Qt Multimedia:
>   Spatial Audio .......................... yes
>   Spatial Audio (Quick3D) ................ no
>   Low level Audio Backend:
>     ALSA (experimental) .................. no
>     PulseAudio ........................... yes
>     MMRenderer ........................... no
>     CoreAudio ............................ no
>     Windows Media SDK .................... no
>     Open SLES (Android) .................. no
>     Web Assembly ......................... no
>   Plugin:
>     GStreamer 1.0 ........................ yes
>     FFmpeg ............................... yes
>     MMRenderer ........................... no
>     AVFoundation ......................... no
>     Windows Media Foundation ............. no
>   Hardware acceleration and features:
>     Video for Linux ...................... yes
>     VAAPI support ........................ yes
>     Linux DMA buffer support ............. yes
>     VideoToolbox ......................... no
>
>
> -- Configuring done (3.7s)
> -- Generating done (0.2s)
> CMake Warning:
>   Manually-specified variables were not used by the project:
>
>     BUILD_DOC
>     BUILD_DOCS
>     BUILD_EXAMPLE
>     BUILD_EXAMPLES
>     BUILD_TEST
>     BUILD_TESTS
>     CMAKE_COLOR_MAKEFILE
>
>
> -- Build files have been written to:
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build
> >>> qt6multimedia 6.7.2 Building
> GIT_DIR=.
> PATH="/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin:/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/sbin:/home/roy/.cargo/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/home/roy/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/depot_tools:/home/roy/.gem/ruby/3.0.0/bin:/home/roy/.local/bin"
>  /usr/bin/cmake --build
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2//buildroot-build
> -j13
> [77/204] Building CXX object
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
> FAILED:
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
> --sysroot=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot
> -DMultimedia_EXPORTS -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT
> -DQT_BUILD_MULTIMEDIA_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
> -DQT_DISABLE_DEPRECATED_UP_TO=0x050000
> -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_MOC_COMPAT
> -DQT_NETWORK_LIB -DQT_NO_AS_CONST -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII
> -DQT_NO_CONTEXTLESS_CONNECT=1 -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS
> -DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS
> -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE
> -DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000
> -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia/Multimedia_autogen/include
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/audio
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/camera
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/controls
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/platform
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/playback
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/recording
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/video
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2/QtMultimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/mkspecs/linux-g++
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtNetwork
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2/QtCore
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2/QtGui
> -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0
> -D_FORTIFY_SOURCE=1 -DNDEBUG -O2 -std=c++17 -fPIC -fvisibility=hidden
> -fvisibility-inlines-hidden -Wall -Wextra -fno-exceptions
> -Wsuggest-override -MD -MT
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
> -MF
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o.d
> -o
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosource.cpp.o
> -c
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosource.cpp
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosource.cpp:566:10:
> fatal error: moc_qpulseaudiosource_p.cpp: Ingen slik fil eller filkatalog
>   566 | #include "moc_qpulseaudiosource_p.cpp"
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> [78/204] Building CXX object
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
> FAILED:
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/bin/aarch64-buildroot-linux-gnu-g++
> --sysroot=/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot
> -DMultimedia_EXPORTS -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT
> -DQT_BUILD_MULTIMEDIA_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
> -DQT_DISABLE_DEPRECATED_UP_TO=0x050000
> -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_MOC_COMPAT
> -DQT_NETWORK_LIB -DQT_NO_AS_CONST -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII
> -DQT_NO_CONTEXTLESS_CONNECT=1 -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS
> -DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS
> -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE
> -DQT_USE_QSTRINGBUILDER -DQT_WARN_DEPRECATED_UP_TO=0x070000
> -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia/Multimedia_autogen/include
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/src/multimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/audio
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/camera
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/controls
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/platform
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/playback
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/recording
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/video
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/buildroot-build/include/QtMultimedia/6.7.2/QtMultimedia
> -I/home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/mkspecs/linux-g++
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtNetwork
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtCore/6.7.2/QtCore
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2
> -isystem
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/QtGui/6.7.2/QtGui
> -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0
> -D_FORTIFY_SOURCE=1 -DNDEBUG -O2 -std=c++17 -fPIC -fvisibility=hidden
> -fvisibility-inlines-hidden -Wall -Wextra -fno-exceptions
> -Wsuggest-override -MD -MT
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
> -MF
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o.d
> -o
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qpulseaudiosink.cpp.o
> -c
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosink.cpp
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/src/multimedia/pulseaudio/qpulseaudiosink.cpp:749:10:
> fatal error: moc_qpulseaudiosink_p.cpp: Ingen slik fil eller filkatalog
>   749 | #include "moc_qpulseaudiosink_p.cpp"
>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> compilation terminated.
> [89/203] Building CXX object
> src/multimedia/CMakeFiles/Multimedia.dir/pulseaudio/qaudioengine_pulse.cpp.o
> ninja: build stopped: subcommand failed.
> make[2]: *** [package/pkg-generic.mk:289:
> /home/roy/hymatek/connexi-touchpanel-firmware/ex7xxm/output/build/qt6multimedia-6.7.2/.stamp_built]
> Error 1
> make[1]: *** [Makefile:83: _all] Error 2
> make[1]: Leaving directory
> '/home/roy/hymatek/connexi-touchpanel-firmware/buildroot'
> make: *** [Makefile:86: ex7xxm/qt6multimedia-reconfigure] Error 2
>
> søn. 22. sep. 2024 kl. 11:21 skrev Roy Kollen Svendsen <
> roykollensvendsen@gmail.com>:
>
>> Hi Baxiche, Hi Thomas,
>>
>> Baxiche, good to see you are working on getting this module upstream!
>> I'll do some testing and dig deeper into the details later.
>>
>> I'm a but unsure about the non-qt dependencies, especially the kernel
>> feature dependencies.
>>
>> You can also probably drop more of the license information, that does not
>> apply to things that don't end up on target.
>>
>> I think it would be nice to be able to enable the examples for testing.
>> The same goes for the other Qt6 packages. Have you looked into that?
>>
>> What do you think about adding options to enable the tests, Thomas?
>>
>> But until I get the time to do some testing and checking, here are some
>> things I noticed while reading through your patch:
>>
>> fre. 20. sep. 2024 kl. 18:06 skrev baxiche su <baxiche@gmail.com>:
>>
>>> Signed-off-by: baxiche su <baxiche@gmail.com>
>>> ---
>>>  DEVELOPERS                                   |   3 +
>>>  package/qt6/Config.in                        |   1 +
>>>  package/qt6/qt6multimedia/Config.in          | 117 ++++++++++++++++
>>>  package/qt6/qt6multimedia/qt6multimedia.hash |  26 ++++
>>>  package/qt6/qt6multimedia/qt6multimedia.mk   | 137 +++++++++++++++++++
>>>  5 files changed, 284 insertions(+)
>>>  create mode 100644 package/qt6/qt6multimedia/Config.in
>>>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.hash
>>>  create mode 100644 package/qt6/qt6multimedia/qt6multimedia.mk
>>>
>>> diff --git a/DEVELOPERS b/DEVELOPERS
>>> index ea4ee3377f..5b6f60444d 100644
>>> --- a/DEVELOPERS
>>> +++ b/DEVELOPERS
>>> @@ -343,6 +343,9 @@ F:  package/tcpdump/
>>>  F:     package/ti-uim/
>>>  F:     package/uhubctl/
>>>
>>> +N:     Baxiche Su <baxiche@gmail.com>
>>> +F:     package/qt6/qt6multimedia
>>>
>>
>> The common pattern is to use a slash at the end of a directory entry:
>>
>> package/qt6/qt6multimedia/
>>
>>
>>> +
>>>  N:     Ben Boeckel <mathstuf@gmail.com>
>>>  F:     package/taskd/
>>>
>>> diff --git a/package/qt6/Config.in b/package/qt6/Config.in
>>> index 4cbb60322c..debf4f4733 100644
>>> --- a/package/qt6/Config.in
>>> +++ b/package/qt6/Config.in
>>> @@ -48,6 +48,7 @@ source "package/qt6/qt6core5compat/Config.in"
>>>  source "package/qt6/qt6declarative/Config.in"
>>>  source "package/qt6/qt6languageserver/Config.in"
>>>  source "package/qt6/qt6mqtt/Config.in"
>>> +source "package/qt6/qt6multimedia/Config.in"
>>>  source "package/qt6/qt6opcua/Config.in"
>>>  source "package/qt6/qt6scxml/Config.in"
>>>  source "package/qt6/qt6serialbus/Config.in"
>>> diff --git a/package/qt6/qt6multimedia/Config.in
>>> b/package/qt6/qt6multimedia/Config.in
>>> new file mode 100644
>>> index 0000000000..1aebef840d
>>> --- /dev/null
>>> +++ b/package/qt6/qt6multimedia/Config.in
>>> @@ -0,0 +1,117 @@
>>> +config BR2_PACKAGE_QT6MULTIMEDIA
>>> +       bool "qt6multimedia"
>>> +       select BR2_PACKAGE_QT6BASE_GUI
>>> +       select BR2_PACKAGE_QT6BASE_NETWORK
>>> +       select BR2_PACKAGE_QT6SHADERTOOLS
>>> +
>>> +       help
>>> +         Qt Multimedia is an add-on module that provides
>>> +         a rich set of QML types and C++ classes to handle
>>> +         multimedia content. It contains an easy to use API
>>> +         for playing back audio and video files and rendering
>>> +         those on screen, as well as a comprehensive API for
>>> +         recording audio and video from the system's cameras
>>> +         and microphones.
>>>
>>
>> You wrap the help text at 62 characters i think. I think it is better to
>> wrap it at 62 + 2 + tab(8 chars). See manual.
>>
>>> +
>>> +         https://doc.qt.io/qt-6/qtmultimedia-index.html
>>> +
>>> +if BR2_PACKAGE_QT6MULTIMEDIA
>>> +
>>> +comment "alsa support requires disabling pulseaudio"
>>> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_ALSA
>>> +       bool "alsa support"
>>> +       # qt6-multimedia audio backend requires selection
>>> +       # of either PulseAudio or ALSA.
>>>
>>
>> Maybe this could be reflected in a choice instead?
>>
>>
>>> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>>> +       select BR2_PACKAGE_ALSA_LIB
>>> +       help
>>> +         This option select Alsa as audio backend.
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
>>> +       bool "ffmpeg plugin"
>>>
>>
>> Does it make sense to make this a choice between ffmpeg and gstreamer
>> instead?
>>
>>
>>> +       # qt6-multimedia ffmpeg plugin needs
>>> +       # qt6base-concurrent, PulseAudio and ffmpeg-swcale.
>>>
>>
>> I think this comment just repeats the info bellow. Can we drop it?
>>
>>
>>> +       select BR2_PACKAGE_QT6BASE_CONCURRENT
>>> +       select BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>>> +       select BR2_PACKAGE_FFMPEG
>>> +       select BR2_PACKAGE_FFMPEG_SWSCALE
>>> +       select BR2_PACKAGE_PULSEAUDIO
>>>
>>
>> I also like when the select statements are sorted alphabetically. Have
>> you ordered them this way intentionally?
>>
>>
>>> +       help
>>> +         This option enables ffmpeg media backend
>>> +
>>> +if BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
>>> +
>>> +comment "VAAPI support needs Linux DMA buffer feature"
>>> +       depends on !BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>>> +
>>>
>>
>>
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_VAAPI
>>> +       bool "vaapi support"
>>> +       depends on BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>>>
>> +       select BR2_PACKAGE_LIBVA
>>> +       # ffmpeg-vaapi support needs qt6base-opengl
>>> +       select BR2_PACKAGE_QT6BASE_OPENGL
>>> +       help
>>> +         This option enables the vaapi support.
>>> +endif
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
>>> +       bool "gstreamer plugin"
>>> +       # gstreamer 1.x and gst-plugins-base-app are required
>>> +       # for gstreamer support in qt6-multimedia
>>> +       select BR2_PACKAGE_GSTREAMER1
>>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE
>>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
>>> +       help
>>> +         This option enables gstreamer media backend
>>> +
>>> +if BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
>>> +
>>> +comment "GStreamer OpenGL support needs an OpenGL-capable backend"
>>> +       depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_OPENGL
>>> +       bool "opengl support"
>>> +       depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
>>> +       select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
>>> +       help
>>> +         This option enables gstreamer-opengl support
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_PHOTOGRAPHY
>>> +       bool "photography support"
>>> +       select BR2_PACKAGE_GST1_PLUGINS_BAD
>>> +       help
>>> +         This option enables gstreamer-photography support
>>> +
>>> +endif
>>> +
>>> +comment "Linux DMA buffer support needs DMA buffer feature of libgbm"
>>> +       depends on !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
>>> +       bool "linux dma buffer support"
>>> +       depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
>>>
>> +       # qt6 configure script needs EGL to check
>>> +       # for linux dma buffer support
>>> +       depends on BR2_PACKAGE_HAS_LIBEGL
>>> +       help
>>> +         This option enables the linux dma buffer support
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L
>>> +       bool "v4l support"
>>> +       help
>>> +         This option enables the video for linux support
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
>>>
>> +       bool "pulseaudio support"
>>> +       select BR2_PACKAGE_PULSEAUDIO
>>> +       help
>>> +         This option select PulseAudio as audio backend.
>>> +
>>> +config BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO
>>> +       bool "spatial audio module"
>>> +       help
>>> +         This option enables the Qt6SpatialAudio library.
>>> +
>>> +endif
>>> diff --git a/package/qt6/qt6multimedia/qt6multimedia.hash
>>> b/package/qt6/qt6multimedia/qt6multimedia.hash
>>> new file mode 100644
>>> index 0000000000..b63aedc1d9
>>> --- /dev/null
>>> +++ b/package/qt6/qt6multimedia/qt6multimedia.hash
>>> @@ -0,0 +1,26 @@
>>> +# Hash from:
>>> https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256
>>> +sha256
>>> <https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256+sha256>
>>> 8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3
>>> qtmultimedia-everywhere-src-6.7.2.tar.xz
>>> +
>>> +# Hashes for license files
>>> +sha256
>>> f32fb3b417a194167cfad068223fc975ba96c5960513a10f66a3c28720aec1df
>>> LICENSES/BSD-2-Clause.txt
>>> +sha256
>>> 9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce
>>> LICENSES/BSD-3-Clause.txt
>>> +sha256
>>> 1f1b677d26ab73e159a55c3a914cf12d888e18a9d0d469fedab4aa6e5a48b1c0
>>> LICENSES/BSD-Source-Code.txt
>>> +sha256
>>> 84c6ef3ea9e3254a54d0acf5d3e0c61ae011b8fef7dd6940591cf060e6380a8f
>>> LICENSES/BSL-1.0.txt
>>> +sha256
>>> 110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4
>>> LICENSES/GFDL-1.3-no-invariants-only.txt
>>> +sha256
>>> 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643
>>> LICENSES/GPL-2.0-only.txt
>>> +sha256
>>> 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903
>>> LICENSES/GPL-3.0-only.txt
>>> +sha256
>>> 7658542977bfdced9e1059a6c934ce4281de76d103b831007b825917dc62511a
>>> LICENSES/IJG.txt
>>> +sha256
>>> f2ec607f67bb0dd3053b49835b02110d5cd0f8eb6da3aac4dc0b142a6b299be9
>>> LICENSES/ISC.txt
>>> +sha256
>>> fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb
>>> LICENSES/LGPL-2.1-or-later.txt
>>> +sha256
>>> da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768
>>> LICENSES/LGPL-3.0-only.txt
>>> +sha256
>>> b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0
>>> LICENSES/MIT.txt
>>> +sha256
>>> 66a3107d5ad6a058aab753eaac2047ccb2ed0e39465dd0fe5844da3e300d5172
>>> LICENSES/MPL-2.0.txt
>>> +sha256
>>> 40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2
>>> LICENSES/Qt-GPL-exception-1.0.txt
>>> +sha256
>>> bfb1112d49db5b1daecdfef24bd7e2f3ea0bafb33aa67aa0ab51e2bf8407c03d
>>> LICENSES/Zlib.txt
>>> +sha256
>>> 85da7c29c2d2f2e6b3116b1219584cb513474cab797b3312a779be4c2181e51e
>>> src/3rdparty/eigen/COPYING.BSD
>>> +sha256
>>> fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85
>>> src/3rdparty/eigen/COPYING.MPL2
>>> +sha256
>>> 8b69cf3ac3ddd34df478c4ae6eaacf5e6c63ea7ee6403c8dad97e4d1438bc3c4
>>> src/3rdparty/eigen/COPYRIGHTS
>>> +sha256
>>> b522f821df94da3bad917e98ef04817b3af421c3b8c23e8247ae7e517b289934
>>> src/3rdparty/pffft/COPYRIGHTS
>>> +sha256
>>> a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88
>>> src/3rdparty/pffft/LICENSE
>>> +sha256
>>> 2513c5ad87ce9e7feed2c9a159d336f0a0d12ff93adcd411f7a15a1ab678f7ac
>>> src/3rdparty/resonance-audio/COPYRIGHTS
>>> +sha256
>>> cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30
>>> src/3rdparty/resonance-audio/LICENSE
>>> diff --git a/package/qt6/qt6multimedia/qt6multimedia.mk
>>> b/package/qt6/qt6multimedia/qt6multimedia.mk
>>> new file mode 100644
>>> index 0000000000..ec81abc1de
>>> --- /dev/null
>>> +++ b/package/qt6/qt6multimedia/qt6multimedia.mk
>>> @@ -0,0 +1,137 @@
>>>
>>> +################################################################################
>>> +#
>>> +# qt6multimedia
>>> +#
>>>
>>> +################################################################################
>>> +
>>> +QT6MULTIMEDIA_VERSION = $(QT6_VERSION)
>>> +QT6MULTIMEDIA_SITE = $(QT6_SITE)
>>> +QT6MULTIMEDIA_SOURCE =
>>> qtmultimedia-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6MULTIMEDIA_VERSION).tar.xz
>>> +QT6MULTIMEDIA_INSTALL_STAGING = YES
>>> +QT6MULTIMEDIA_SUPPORTS_IN_SOURCE_BUILD = NO
>>> +QT6MULTIMEDIA_CMAKE_BACKEND = ninja
>>> +
>>> +QT6MULTIMEDIA_LICENSE = \
>>> +    BSD-3-Clause (buildsystem, examples, pfft,  snippets), \
>>> +    GFDL-1.3-no-invariants (docs), \
>>> +    GPL-3.0 (tests), \
>>> +    GPL-3.0 with Qt-GPL-exception-1.0 (utils), \
>>> +    LGPL-3.0 or GPL-2.0 or GPL-3.0 (modules, plugins)
>>> +
>>> +QT6MULTIMEDIA_LICENSE_FILES = \
>>> +    LICENSES/BSD-3-Clause.txt \
>>> +    LICENSES/GFDL-1.3-no-invariants-only.txt \
>>> +    LICENSES/GPL-2.0-only.txt \
>>> +    LICENSES/GPL-3.0-only.txt \
>>> +    LICENSES/LGPL-3.0-only.txt \
>>> +    LICENSES/Qt-GPL-exception-1.0.txt \
>>> +
>>> +QT6MULTIMEDIA_DEPENDENCIES = \
>>> +    qt6base \
>>> +    qt6shadertools
>>> +
>>> +QT6MULTIMEDIA_CONF_OPTS = \
>>> +    -DQT_HOST_PATH=$(HOST_DIR) \
>>> +    -DQT_BUILD_EXAMPLES=OFF \
>>> +    -DQT_BUILD_TESTS=OFF \
>>>
>> +    -DFEATURE_alsa=OFF \
>>>
>>
>> I think is better to gather all code related to one option in one place.
>> So this should be moved down into the ifeq-statement for alsa.
>> The same goes for the other options.
>>
>> +    -DFEATURE_ffmpeg=OFF \
>>> +    -DFEATURE_gstreamer=OFF \
>>> +    -DFEATURE_gstreamer_1_0=OFF \
>>> +    -DFEATURE_gstreamer_app=OFF \
>>> +    -DFEATURE_gstreamer_gl=OFF \
>>> +    -DFEATURE_gstreamer_photography=OFF \
>>> +    -DFEATURE_linux_dmabuf=OFF \
>>> +    -DFEATURE_linux_v4l=OFF \
>>> +    -DFEATURE_pulseaudio=OFF \
>>> +    -DFEATURE_spatialaudio=OFF \
>>> +    -DFEATURE_spatialaudio_quick3d=OFF \
>>> +    -DFEATURE_vaapi=OFF
>>> +
>>> +# for multimedia quick module
>>> +ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y)
>>> +QT6MULTIMEDIA_DEPENDENCIES += qt6declarative
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_ALSA),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += alsa-lib
>>>
>>
>> Gather all code related to the alsa option here:
>>
>> else
>> QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=OFF
>>
>>
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_ffmpeg=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += ffmpeg
>>> +QT6MULTIMEDIA_LICENSE += , \
>>> +    BSL-1.0 (ffmpeg-boost), \
>>> +    IJG (ffmpeg-libjpeg), \
>>> +    LGPL-2.1+ and BSD-3-Clause and BSD-2-Clause and BSD-Source-Code and
>>> ISC and MIT and MPL-2.0 (ffmpeg), \
>>> +    Zlib (ffmpeg-zlib)
>>> +QT6MULTIMEDIA_LICENSE_FILES += \
>>> +    LICENSES/BSD-2-Clause.txt \
>>> +    LICENSES/BSD-Source-Code.txt \
>>> +    LICENSES/BSL-1.0.txt \
>>> +    LICENSES/IJG.txt \
>>> +    LICENSES/ISC.txt \
>>> +    LICENSES/LGPL-2.1-or-later.txt \
>>> +    LICENSES/MIT.txt \
>>> +    LICENSES/MPL-2.0.txt \
>>> +    LICENSES/Zlib.txt
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += \
>>> +    -DFEATURE_gstreamer=ON \
>>> +    -DFEATURE_gstreamer_1_0=ON \
>>> +    -DFEATURE_gstreamer_app=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += gstreamer1 gst1-plugins-base
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GST_PLUGINS_PHOTOGRAPHY),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_gstreamer_photography=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += gst1-plugins-bad
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_dmabuf=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += libgbm libegl
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_v4l=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += linux
>>>
>>
>> I was probably wrong here in my last comment, I don't think the
>> dependency on linux is necessary... I have no experience with dependencies
>> on kernel config, so you should ask Thomas or someone else about how
>> dependencies on linux config options are handled. Maybe this is relevant?:
>>
>> https://www.marcusfolkesson.se/til/buildroot-libfoo-linux-config-fixup/
>>
>>
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_pulseaudio=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += pulseaudio
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio=ON
>>> +QT6MULTIMEDIA_LICENSE += , \
>>> +    Apache-2.0 (resonance-audio, eigen), \
>>> +    LGPL-3.0 or GPL-3.0 (resonance-audio, spatialaudio,
>>> spatialaudioquick3d), \
>>> +    MPL-2.0 and BSD-3-Clause (eigen)
>>> +QT6MULTIMEDIA_LICENSE_FILES += \
>>> +    LICENSES/MPL-2.0.txt \
>>> +    src/3rdparty/eigen/COPYING.BSD \
>>> +    src/3rdparty/eigen/COPYING.MPL2 \
>>> +    src/3rdparty/eigen/COPYRIGHTS \
>>> +    src/3rdparty/pffft/COPYRIGHTS \
>>> +    src/3rdparty/pffft/LICENSE \
>>> +    src/3rdparty/resonance-audio/COPYRIGHTS \
>>> +    src/3rdparty/resonance-audio/LICENSE
>>> +
>>> +# for spatialaudio quick3d module
>>> +ifeq ($(BR2_PACKAGE_QT6QUICK3D),y)
>>> +QT6MULTIMEDIA_DEPENDENCIES += qt6quick3d
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio_quick3d=ON
>>> +endif
>>> +endif
>>> +
>>> +ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_VAAPI),y)
>>> +QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_vaapi=ON
>>> +QT6MULTIMEDIA_DEPENDENCIES += libva
>>> +endif
>>> +
>>> +$(eval $(cmake-package))
>>> --
>>> 2.34.1
>>>
>>>
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index ea4ee3377f..5b6f60444d 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -343,6 +343,9 @@  F:	package/tcpdump/
 F:	package/ti-uim/
 F:	package/uhubctl/
 
+N:	Baxiche Su <baxiche@gmail.com>
+F:	package/qt6/qt6multimedia
+
 N:	Ben Boeckel <mathstuf@gmail.com>
 F:	package/taskd/
 
diff --git a/package/qt6/Config.in b/package/qt6/Config.in
index 4cbb60322c..debf4f4733 100644
--- a/package/qt6/Config.in
+++ b/package/qt6/Config.in
@@ -48,6 +48,7 @@  source "package/qt6/qt6core5compat/Config.in"
 source "package/qt6/qt6declarative/Config.in"
 source "package/qt6/qt6languageserver/Config.in"
 source "package/qt6/qt6mqtt/Config.in"
+source "package/qt6/qt6multimedia/Config.in"
 source "package/qt6/qt6opcua/Config.in"
 source "package/qt6/qt6scxml/Config.in"
 source "package/qt6/qt6serialbus/Config.in"
diff --git a/package/qt6/qt6multimedia/Config.in b/package/qt6/qt6multimedia/Config.in
new file mode 100644
index 0000000000..1aebef840d
--- /dev/null
+++ b/package/qt6/qt6multimedia/Config.in
@@ -0,0 +1,117 @@ 
+config BR2_PACKAGE_QT6MULTIMEDIA
+	bool "qt6multimedia"
+	select BR2_PACKAGE_QT6BASE_GUI
+	select BR2_PACKAGE_QT6BASE_NETWORK
+	select BR2_PACKAGE_QT6SHADERTOOLS
+
+	help
+    	  Qt Multimedia is an add-on module that provides 
+  	  a rich set of QML types and C++ classes to handle 
+  	  multimedia content. It contains an easy to use API 
+  	  for playing back audio and video files and rendering 
+  	  those on screen, as well as a comprehensive API for 
+  	  recording audio and video from the system's cameras 
+  	  and microphones.
+
+	  https://doc.qt.io/qt-6/qtmultimedia-index.html
+
+if BR2_PACKAGE_QT6MULTIMEDIA
+
+comment "alsa support requires disabling pulseaudio"
+	depends on BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
+
+config BR2_PACKAGE_QT6MULTIMEDIA_ALSA
+	bool "alsa support"
+	# qt6-multimedia audio backend requires selection 
+	# of either PulseAudio or ALSA.
+	depends on !BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
+	select BR2_PACKAGE_ALSA_LIB
+	help 
+	  This option select Alsa as audio backend.
+
+config BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
+	bool "ffmpeg plugin"
+	# qt6-multimedia ffmpeg plugin needs 
+	# qt6base-concurrent, PulseAudio and ffmpeg-swcale.
+	select BR2_PACKAGE_QT6BASE_CONCURRENT
+	select BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
+	select BR2_PACKAGE_FFMPEG
+	select BR2_PACKAGE_FFMPEG_SWSCALE
+	select BR2_PACKAGE_PULSEAUDIO
+	help 
+	  This option enables ffmpeg media backend
+
+if BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG
+
+comment "VAAPI support needs Linux DMA buffer feature"
+	depends on !BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
+
+config BR2_PACKAGE_QT6MULTIMEDIA_VAAPI
+	bool "vaapi support"
+	depends on BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
+	select BR2_PACKAGE_LIBVA
+	# ffmpeg-vaapi support needs qt6base-opengl
+	select BR2_PACKAGE_QT6BASE_OPENGL
+	help 
+	  This option enables the vaapi support.
+endif
+
+config BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
+	bool "gstreamer plugin"
+	# gstreamer 1.x and gst-plugins-base-app are required 
+	# for gstreamer support in qt6-multimedia
+	select BR2_PACKAGE_GSTREAMER1
+	select BR2_PACKAGE_GST1_PLUGINS_BASE
+	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
+	help 
+	  This option enables gstreamer media backend
+
+if BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER
+
+comment "GStreamer OpenGL support needs an OpenGL-capable backend"
+	depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES
+
+config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_OPENGL
+	bool "opengl support"
+	depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
+	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
+	help
+	  This option enables gstreamer-opengl support
+
+config BR2_PACKAGE_QT6MULTIMEDIA_GST1_PLUGINS_PHOTOGRAPHY
+	bool "photography support"
+	select BR2_PACKAGE_GST1_PLUGINS_BAD
+	help
+	  This option enables gstreamer-photography support
+
+endif
+
+comment "Linux DMA buffer support needs DMA buffer feature of libgbm"
+	depends on !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
+
+config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF
+	bool "linux dma buffer support"
+	depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
+	# qt6 configure script needs EGL to check 
+	# for linux dma buffer support
+	depends on BR2_PACKAGE_HAS_LIBEGL
+	help 
+	  This option enables the linux dma buffer support
+
+config BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L
+	bool "v4l support"
+	help 
+	  This option enables the video for linux support
+
+config BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO
+	bool "pulseaudio support"
+	select BR2_PACKAGE_PULSEAUDIO
+	help 
+	  This option select PulseAudio as audio backend.
+
+config BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO
+	bool "spatial audio module"
+	help 
+	  This option enables the Qt6SpatialAudio library.
+
+endif
diff --git a/package/qt6/qt6multimedia/qt6multimedia.hash b/package/qt6/qt6multimedia/qt6multimedia.hash
new file mode 100644
index 0000000000..b63aedc1d9
--- /dev/null
+++ b/package/qt6/qt6multimedia/qt6multimedia.hash
@@ -0,0 +1,26 @@ 
+# Hash from: https://download.qt.io/official_releases/qt/6.7/6.7.2/submodules/qtmultimedia-everywhere-src-6.7.2.tar.xz.sha256
+sha256  8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3  qtmultimedia-everywhere-src-6.7.2.tar.xz
+
+# Hashes for license files
+sha256  f32fb3b417a194167cfad068223fc975ba96c5960513a10f66a3c28720aec1df  LICENSES/BSD-2-Clause.txt
+sha256  9f0490f18656c6f2435bd14f603ef0c96434d1825615363dce43abb42ed1dcce  LICENSES/BSD-3-Clause.txt
+sha256  1f1b677d26ab73e159a55c3a914cf12d888e18a9d0d469fedab4aa6e5a48b1c0  LICENSES/BSD-Source-Code.txt
+sha256  84c6ef3ea9e3254a54d0acf5d3e0c61ae011b8fef7dd6940591cf060e6380a8f  LICENSES/BSL-1.0.txt
+sha256  110535522396708cea37c72a802c5e7e81391139f5f7985631c93ef242b206a4  LICENSES/GFDL-1.3-no-invariants-only.txt
+sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSES/GPL-2.0-only.txt
+sha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSES/GPL-3.0-only.txt
+sha256  7658542977bfdced9e1059a6c934ce4281de76d103b831007b825917dc62511a  LICENSES/IJG.txt
+sha256  f2ec607f67bb0dd3053b49835b02110d5cd0f8eb6da3aac4dc0b142a6b299be9  LICENSES/ISC.txt
+sha256  fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb  LICENSES/LGPL-2.1-or-later.txt
+sha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSES/LGPL-3.0-only.txt
+sha256  b85dcd3e453d05982552c52b5fc9e0bdd6d23c6f8e844b984a88af32570b0cc0  LICENSES/MIT.txt
+sha256  66a3107d5ad6a058aab753eaac2047ccb2ed0e39465dd0fe5844da3e300d5172  LICENSES/MPL-2.0.txt
+sha256  40678d338ce53cd93f8b22b281a2ecbcaa3ee65ce60b25ffb0c462b0530846b2  LICENSES/Qt-GPL-exception-1.0.txt
+sha256  bfb1112d49db5b1daecdfef24bd7e2f3ea0bafb33aa67aa0ab51e2bf8407c03d  LICENSES/Zlib.txt
+sha256  85da7c29c2d2f2e6b3116b1219584cb513474cab797b3312a779be4c2181e51e  src/3rdparty/eigen/COPYING.BSD
+sha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  src/3rdparty/eigen/COPYING.MPL2
+sha256  8b69cf3ac3ddd34df478c4ae6eaacf5e6c63ea7ee6403c8dad97e4d1438bc3c4  src/3rdparty/eigen/COPYRIGHTS
+sha256  b522f821df94da3bad917e98ef04817b3af421c3b8c23e8247ae7e517b289934  src/3rdparty/pffft/COPYRIGHTS
+sha256  a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88  src/3rdparty/pffft/LICENSE
+sha256  2513c5ad87ce9e7feed2c9a159d336f0a0d12ff93adcd411f7a15a1ab678f7ac  src/3rdparty/resonance-audio/COPYRIGHTS
+sha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/resonance-audio/LICENSE
diff --git a/package/qt6/qt6multimedia/qt6multimedia.mk b/package/qt6/qt6multimedia/qt6multimedia.mk
new file mode 100644
index 0000000000..ec81abc1de
--- /dev/null
+++ b/package/qt6/qt6multimedia/qt6multimedia.mk
@@ -0,0 +1,137 @@ 
+################################################################################
+#
+# qt6multimedia
+#
+################################################################################
+
+QT6MULTIMEDIA_VERSION = $(QT6_VERSION)
+QT6MULTIMEDIA_SITE = $(QT6_SITE)
+QT6MULTIMEDIA_SOURCE = qtmultimedia-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6MULTIMEDIA_VERSION).tar.xz
+QT6MULTIMEDIA_INSTALL_STAGING = YES
+QT6MULTIMEDIA_SUPPORTS_IN_SOURCE_BUILD = NO
+QT6MULTIMEDIA_CMAKE_BACKEND = ninja
+
+QT6MULTIMEDIA_LICENSE = \
+    BSD-3-Clause (buildsystem, examples, pfft,  snippets), \
+    GFDL-1.3-no-invariants (docs), \
+    GPL-3.0 (tests), \
+    GPL-3.0 with Qt-GPL-exception-1.0 (utils), \
+    LGPL-3.0 or GPL-2.0 or GPL-3.0 (modules, plugins)
+
+QT6MULTIMEDIA_LICENSE_FILES = \
+    LICENSES/BSD-3-Clause.txt \
+    LICENSES/GFDL-1.3-no-invariants-only.txt \
+    LICENSES/GPL-2.0-only.txt \
+    LICENSES/GPL-3.0-only.txt \
+    LICENSES/LGPL-3.0-only.txt \
+    LICENSES/Qt-GPL-exception-1.0.txt \
+
+QT6MULTIMEDIA_DEPENDENCIES = \
+    qt6base \
+    qt6shadertools
+
+QT6MULTIMEDIA_CONF_OPTS = \
+    -DQT_HOST_PATH=$(HOST_DIR) \
+    -DQT_BUILD_EXAMPLES=OFF \
+    -DQT_BUILD_TESTS=OFF \
+    -DFEATURE_alsa=OFF \
+    -DFEATURE_ffmpeg=OFF \
+    -DFEATURE_gstreamer=OFF \
+    -DFEATURE_gstreamer_1_0=OFF \
+    -DFEATURE_gstreamer_app=OFF \
+    -DFEATURE_gstreamer_gl=OFF \
+    -DFEATURE_gstreamer_photography=OFF \
+    -DFEATURE_linux_dmabuf=OFF \
+    -DFEATURE_linux_v4l=OFF \
+    -DFEATURE_pulseaudio=OFF \
+    -DFEATURE_spatialaudio=OFF \
+    -DFEATURE_spatialaudio_quick3d=OFF \
+    -DFEATURE_vaapi=OFF
+
+# for multimedia quick module
+ifeq ($(BR2_PACKAGE_QT6DECLARATIVE),y)
+QT6MULTIMEDIA_DEPENDENCIES += qt6declarative
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_ALSA),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_alsa=ON
+QT6MULTIMEDIA_DEPENDENCIES += alsa-lib
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_FFMPEG),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_ffmpeg=ON
+QT6MULTIMEDIA_DEPENDENCIES += ffmpeg
+QT6MULTIMEDIA_LICENSE += , \
+    BSL-1.0 (ffmpeg-boost), \
+    IJG (ffmpeg-libjpeg), \
+    LGPL-2.1+ and BSD-3-Clause and BSD-2-Clause and BSD-Source-Code and ISC and MIT and MPL-2.0 (ffmpeg), \
+    Zlib (ffmpeg-zlib)
+QT6MULTIMEDIA_LICENSE_FILES += \
+    LICENSES/BSD-2-Clause.txt \
+    LICENSES/BSD-Source-Code.txt \
+    LICENSES/BSL-1.0.txt \
+    LICENSES/IJG.txt \
+    LICENSES/ISC.txt \
+    LICENSES/LGPL-2.1-or-later.txt \
+    LICENSES/MIT.txt \
+    LICENSES/MPL-2.0.txt \
+    LICENSES/Zlib.txt
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GSTREAMER),y)
+QT6MULTIMEDIA_CONF_OPTS += \
+    -DFEATURE_gstreamer=ON \
+    -DFEATURE_gstreamer_1_0=ON \
+    -DFEATURE_gstreamer_app=ON 
+QT6MULTIMEDIA_DEPENDENCIES += gstreamer1 gst1-plugins-base
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_GST_PLUGINS_PHOTOGRAPHY),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_gstreamer_photography=ON
+QT6MULTIMEDIA_DEPENDENCIES += gst1-plugins-bad
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_DMA_BUF),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_dmabuf=ON
+QT6MULTIMEDIA_DEPENDENCIES += libgbm libegl
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_LINUX_V4L),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_linux_v4l=ON
+QT6MULTIMEDIA_DEPENDENCIES += linux
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_PULSEAUDIO),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_pulseaudio=ON
+QT6MULTIMEDIA_DEPENDENCIES += pulseaudio
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_SPATIALAUDIO),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio=ON
+QT6MULTIMEDIA_LICENSE += , \
+    Apache-2.0 (resonance-audio, eigen), \
+    LGPL-3.0 or GPL-3.0 (resonance-audio, spatialaudio, spatialaudioquick3d), \
+    MPL-2.0 and BSD-3-Clause (eigen)
+QT6MULTIMEDIA_LICENSE_FILES += \
+    LICENSES/MPL-2.0.txt \
+    src/3rdparty/eigen/COPYING.BSD \
+    src/3rdparty/eigen/COPYING.MPL2 \
+    src/3rdparty/eigen/COPYRIGHTS \
+    src/3rdparty/pffft/COPYRIGHTS \
+    src/3rdparty/pffft/LICENSE \
+    src/3rdparty/resonance-audio/COPYRIGHTS \
+    src/3rdparty/resonance-audio/LICENSE
+
+# for spatialaudio quick3d module
+ifeq ($(BR2_PACKAGE_QT6QUICK3D),y)
+QT6MULTIMEDIA_DEPENDENCIES += qt6quick3d
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_spatialaudio_quick3d=ON
+endif
+endif
+
+ifeq ($(BR2_PACKAGE_QT6MULTIMEDIA_VAAPI),y)
+QT6MULTIMEDIA_CONF_OPTS += -DFEATURE_vaapi=ON
+QT6MULTIMEDIA_DEPENDENCIES += libva
+endif
+
+$(eval $(cmake-package))