diff --git a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.6.0.patchset b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.7.0.patchset similarity index 66% rename from dev-qt/qt6-multimedia/patches/qt6_multimedia-6.6.0.patchset rename to dev-qt/qt6-multimedia/patches/qt6_multimedia-6.7.0.patchset index 95a2f4aa9..d56a1442d 100644 --- a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.6.0.patchset +++ b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.7.0.patchset @@ -1,14 +1,14 @@ -From 78a4a3341fa2a348e4865686d6d30d5bc3ce43a9 Mon Sep 17 00:00:00 2001 +From 0ac90d7b667fbd8aa116e4b6e3524b01286d3c82 Mon Sep 17 00:00:00 2001 From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 18 Oct 2023 15:46:10 +1000 +Date: Tue, 9 Apr 2024 22:25:53 +1000 Subject: Enable OpenAL (wasm) audio backend for Haiku diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt -index 0190c6d..1566fbc 100644 +index 42c094f..56eee11 100644 --- a/src/multimedia/CMakeLists.txt +++ b/src/multimedia/CMakeLists.txt -@@ -243,7 +243,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf AND MINGW +@@ -251,7 +251,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf AND MINGW windows/qcomtaskresource_p.h ) @@ -18,7 +18,7 @@ index 0190c6d..1566fbc 100644 wasm/qwasmmediadevices.cpp wasm/qwasmmediadevices_p.h wasm/qwasmaudiosource.cpp wasm/qwasmaudiosource_p.h diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake -index 6098065..9da9e27 100644 +index 5e6682f..06f7b30 100644 --- a/src/multimedia/configure.cmake +++ b/src/multimedia/configure.cmake @@ -76,7 +76,7 @@ qt_feature("ffmpeg" PRIVATE @@ -38,10 +38,10 @@ index 6098065..9da9e27 100644 + CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM AND NOT HAIKU ) diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp -index f971fb4..f509fcb 100644 +index 484886f..e4846ca 100644 --- a/src/multimedia/platform/qplatformmediadevices.cpp +++ b/src/multimedia/platform/qplatformmediadevices.cpp -@@ -25,7 +25,7 @@ +@@ -20,7 +20,7 @@ #include #elif defined(Q_OS_QNX) #include @@ -50,15 +50,15 @@ index f971fb4..f509fcb 100644 #include #endif -@@ -66,7 +66,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance() - devicesHolder.nativeInstance = new QPulseAudioMediaDevices; +@@ -41,7 +41,7 @@ std::unique_ptr QPlatformMediaDevices::create() + return std::make_unique(); #elif defined(Q_OS_QNX) - devicesHolder.nativeInstance = new QQnxMediaDevices; + return std::make_unique(); -#elif defined(Q_OS_WASM) +#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) - devicesHolder.nativeInstance = new QWasmMediaDevices; + return std::make_unique(); #else - devicesHolder.nativeInstance = new QPlatformMediaDevices; + return std::make_unique(); diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp index c87a0ad..0b9c806 100644 --- a/src/multimedia/wasm/qwasmaudiodevice.cpp @@ -103,7 +103,7 @@ index c87a0ad..0b9c806 100644 auto f = QAudioFormat::Float; diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp -index 4c698f3..cf73873 100644 +index d1068e7..e75b0f8 100644 --- a/src/multimedia/wasm/qwasmaudiosink.cpp +++ b/src/multimedia/wasm/qwasmaudiosink.cpp @@ -4,18 +4,23 @@ @@ -188,52 +188,8 @@ index 4c698f3..cf73873 100644 default: return formatError(); } -@@ -212,7 +253,7 @@ void QWasmAudioSink::resume() - alSourcePlay(aldata->source); - } - --int QWasmAudioSink::bytesFree() const -+qsizetype QWasmAudioSink::bytesFree() const - { - int processed; - alGetSourcei(aldata->source, AL_BUFFERS_PROCESSED, &processed); -@@ -220,7 +261,7 @@ int QWasmAudioSink::bytesFree() const - + processed) : 0; - } - --void QWasmAudioSink::setBufferSize(int value) -+void QWasmAudioSink::setBufferSize(qsizetype value) - { - if (m_running) - return; -@@ -228,7 +269,7 @@ void QWasmAudioSink::setBufferSize(int value) - m_bufferSize = value; - } - --int QWasmAudioSink::bufferSize() const -+qsizetype QWasmAudioSink::bufferSize() const - { - return m_bufferSize; - } -diff --git a/src/multimedia/wasm/qwasmaudiosink_p.h b/src/multimedia/wasm/qwasmaudiosink_p.h -index ec703c8..975b7f6 100644 ---- a/src/multimedia/wasm/qwasmaudiosink_p.h -+++ b/src/multimedia/wasm/qwasmaudiosink_p.h -@@ -70,9 +70,9 @@ public: - void reset() override; - void suspend() override; - void resume() override; -- int bytesFree() const override; -- void setBufferSize(int value) override; -- int bufferSize() const override; -+ qsizetype bytesFree() const override; -+ void setBufferSize(qsizetype value) override; -+ qsizetype bufferSize() const override; - qint64 processedUSecs() const override; - QAudio::Error error() const override; - QAudio::State state() const override; diff --git a/src/multimedia/wasm/qwasmaudiosource.cpp b/src/multimedia/wasm/qwasmaudiosource.cpp -index 9f51d70..365d502 100644 +index 81f222c..d18cb7c 100644 --- a/src/multimedia/wasm/qwasmaudiosource.cpp +++ b/src/multimedia/wasm/qwasmaudiosource.cpp @@ -3,7 +3,10 @@ @@ -247,64 +203,23 @@ index 9f51d70..365d502 100644 #include #include #include -@@ -217,7 +220,7 @@ void QWasmAudioSource::resume() - alcCaptureStart(aldata->device); - } - --int QWasmAudioSource::bytesReady() const -+qsizetype QWasmAudioSource::bytesReady() const - { - if (!m_running) - return 0; -@@ -226,14 +229,14 @@ int QWasmAudioSource::bytesReady() const - return m_format.bytesForFrames(samples); - } - --void QWasmAudioSource::setBufferSize(int value) -+void QWasmAudioSource::setBufferSize(qsizetype value) - { - if (!m_running) - return; - m_bufferSize = value; - } - --int QWasmAudioSource::bufferSize() const -+qsizetype QWasmAudioSource::bufferSize() const - { - return m_bufferSize; - } -diff --git a/src/multimedia/wasm/qwasmaudiosource_p.h b/src/multimedia/wasm/qwasmaudiosource_p.h -index 41faa34..7a306d9 100644 ---- a/src/multimedia/wasm/qwasmaudiosource_p.h -+++ b/src/multimedia/wasm/qwasmaudiosource_p.h -@@ -55,9 +55,9 @@ public: - void reset() override; - void suspend() override; - void resume() override; -- int bytesReady() const override; -- void setBufferSize(int value) override; -- int bufferSize() const override; -+ qsizetype bytesReady() const override; -+ void setBufferSize(qsizetype value) override; -+ qsizetype bufferSize() const override; - qint64 processedUSecs() const override; - QAudio::Error error() const override; - QAudio::State state() const override; --- -2.42.0 - - -From ca8425a49f7e54c9e724adbe6a3f8653fa125361 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 18 Oct 2023 15:47:01 +1000 -Subject: Improve openal backend for Haiku - - diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp -index 2f4ff68..c91ab37 100644 +index 4e59fd1..0f6fff5 100644 --- a/src/multimedia/wasm/qwasmmediadevices.cpp +++ b/src/multimedia/wasm/qwasmmediadevices.cpp -@@ -197,6 +197,7 @@ void QWasmMediaDevices::parseDevices(emscripten::val devices) +@@ -71,6 +71,7 @@ QPlatformAudioSink *QWasmMediaDevices::createAudioSink(const QAudioDevice &devic + return new QWasmAudioSink(deviceInfo.id(), parent); + } + ++#ifndef Q_OS_HAIKU + void QWasmMediaDevices::parseDevices(emscripten::val devices) + { + if (devices.isNull() || devices.isUndefined()) { +@@ -194,9 +195,11 @@ void QWasmMediaDevices::parseDevices(emscripten::val devices) + m_firstInit = false; + + } ++#endif void QWasmMediaDevices::getMediaDevices() { @@ -312,15 +227,16 @@ index 2f4ff68..c91ab37 100644 emscripten::val navigator = emscripten::val::global("navigator"); m_jsMediaDevicesInterface = navigator["mediaDevices"]; -@@ -243,6 +244,7 @@ void QWasmMediaDevices::getMediaDevices() +@@ -243,7 +246,7 @@ void QWasmMediaDevices::getMediaDevices() std::move(enumerateDevicesCallback)); }); } +- +#endif } void QWasmMediaDevices::getOpenALAudioDevices() -@@ -252,10 +254,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() +@@ -253,10 +256,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() auto capture = alcGetString(nullptr, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); // present even if there is no capture device if (capture && !m_audioOutputs.contains(capture)) { @@ -338,7 +254,7 @@ index 2f4ff68..c91ab37 100644 m_audioInputsAdded = true; emit audioInputsChanged(); } -@@ -263,10 +272,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() +@@ -264,10 +274,17 @@ void QWasmMediaDevices::getOpenALAudioDevices() auto playback = alcGetString(nullptr, ALC_DEFAULT_DEVICE_SPECIFIER); // present even if there is no playback device if (playback && !m_audioOutputs.contains(capture)) { @@ -357,7 +273,7 @@ index 2f4ff68..c91ab37 100644 } m_firstInit = true; diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h -index b97036f..244e1ee 100644 +index b97036f..84bcdbc 100644 --- a/src/multimedia/wasm/qwasmmediadevices_p.h +++ b/src/multimedia/wasm/qwasmmediadevices_p.h @@ -19,16 +19,20 @@ @@ -381,7 +297,15 @@ index b97036f..244e1ee 100644 #include QT_BEGIN_NAMESPACE -@@ -73,13 +77,16 @@ private: +@@ -67,19 +71,24 @@ private: + void updateCameraDevices(); + void getMediaDevices(); + void getOpenALAudioDevices(); ++#ifndef __HAIKU__ + void parseDevices(emscripten::val devices); ++#endif + + QMap m_audioOutputs; QMap m_audioInputs; QMap m_cameraDevices; @@ -399,77 +323,22 @@ index b97036f..244e1ee 100644 bool m_initDone = false; bool m_firstInit = false; }; --- -2.42.0 - - -From 15c7fc247f0552b070ba078d5fc32b10a63de9c9 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 18 Oct 2023 15:47:19 +1000 -Subject: Fix encode url for local files - - diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp -index 689ae49..ae6e62d 100644 +index 2871b24..6223061 100644 --- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp -@@ -145,8 +145,11 @@ std::optional - MediaDataHolder::recreateAVFormatContext(const QUrl &media, QIODevice *stream) +@@ -156,7 +156,11 @@ namespace { + QMaybe + loadMedia(const QUrl &mediaUrl, QIODevice *stream, const std::shared_ptr &cancelToken) { - *this = MediaDataHolder{}; -- +#ifndef Q_OS_HAIKU - QByteArray url = media.toString(QUrl::PreferLocalFile).toUtf8(); + const QByteArray url = mediaUrl.toString(QUrl::PreferLocalFile).toUtf8(); +#else -+ QByteArray url = media.isLocalFile() ? (media.toString(QUrl::PreferLocalFile).toLocal8Bit()) : (media.toEncoded()); ++ const QByteArray url = mediaUrl.isLocalFile() ? (mediaUrl.toString(QUrl::PreferLocalFile).toLocal8Bit()) : (mediaUrl.toEncoded()); +#endif - AVFormatContext *context = nullptr; + AVFormatContextUPtr context{ avformat_alloc_context() }; -- -2.42.0 - - -From 00668d72f8f4d1c63b700904332f64f642a76556 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 18 Oct 2023 16:03:16 +1000 -Subject: Disable emscripten device parser for Haiku - - -diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp -index c91ab37..5c14d74 100644 ---- a/src/multimedia/wasm/qwasmmediadevices.cpp -+++ b/src/multimedia/wasm/qwasmmediadevices.cpp -@@ -71,6 +71,7 @@ QPlatformAudioSink *QWasmMediaDevices::createAudioSink(const QAudioDevice &devic - return new QWasmAudioSink(deviceInfo.id(), parent); - } - -+#ifndef Q_OS_HAIKU - void QWasmMediaDevices::parseDevices(emscripten::val devices) - { - if (devices.isNull() || devices.isUndefined()) { -@@ -194,6 +195,7 @@ void QWasmMediaDevices::parseDevices(emscripten::val devices) - m_firstInit = false; - - } -+#endif - - void QWasmMediaDevices::getMediaDevices() - { -diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h -index 244e1ee..84bcdbc 100644 ---- a/src/multimedia/wasm/qwasmmediadevices_p.h -+++ b/src/multimedia/wasm/qwasmmediadevices_p.h -@@ -71,7 +71,9 @@ private: - void updateCameraDevices(); - void getMediaDevices(); - void getOpenALAudioDevices(); -+#ifndef __HAIKU__ - void parseDevices(emscripten::val devices); -+#endif - - QMap m_audioOutputs; - QMap m_audioInputs; --- -2.42.0 +2.43.2 diff --git a/dev-qt/qt6-multimedia/qt6_multimedia-6.6.0.recipe b/dev-qt/qt6-multimedia/qt6_multimedia-6.7.0.recipe similarity index 92% rename from dev-qt/qt6-multimedia/qt6_multimedia-6.6.0.recipe rename to dev-qt/qt6-multimedia/qt6_multimedia-6.7.0.recipe index 907624c7a..0ea8c6a9a 100644 --- a/dev-qt/qt6-multimedia/qt6_multimedia-6.6.0.recipe +++ b/dev-qt/qt6-multimedia/qt6_multimedia-6.7.0.recipe @@ -4,13 +4,14 @@ used for developing software with a graphical user interface, and also used \ for developing non-GUI programs such as command-line tools and consoles for \ servers." HOMEPAGE="https://qt.io/" -COPYRIGHT="2015-2023 The Qt Company Ltd." +COPYRIGHT="2015-2024 The Qt Company Ltd." LICENSE="GNU LGPL v2.1 GNU LGPL v3 GNU FDL v1" REVISION="1" -SOURCE_URI="https://download.qt.io/official_releases/qt/${portVersion%.*}/$portVersion/submodules/qtmultimedia-everywhere-src-$portVersion.tar.xz" -CHECKSUM_SHA256="ba4b236ca3ec118841b7f5ba87797e24a8c5cbef9ba973fe219fbfc310d38782" +QT_MIRROR_URI="https://qt-mirror.dannhauer.de/archive" +SOURCE_URI="$QT_MIRROR_URI/qt/${portVersion%.*}/$portVersion/submodules/qtmultimedia-everywhere-src-$portVersion.tar.xz" +CHECKSUM_SHA256="f394bae49e3d4ee6a3b0c9e1e5e31bb870cc04a4b44f4cda3615baf7bd078c70" SOURCE_DIR="qtmultimedia-everywhere-src-$portVersion" PATCHES="qt6_multimedia-$portVersion.patchset"