Message ID | 20240920160500.18551-1-baxiche@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v3,1/1] package/qt6: add qt6 multimedia | expand |
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 > >
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
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
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 >> >>
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 --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))
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