qt6_multimedia: bump version

This commit is contained in:
Gerasim Troeglazov
2024-04-14 22:01:04 +10:00
parent 95682f0ff3
commit bed181b67b
2 changed files with 54 additions and 184 deletions

View File

@@ -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 <qpulseaudiomediadevices_p.h>
#elif defined(Q_OS_QNX)
#include <qqnxmediadevices_p.h>
@@ -50,15 +50,15 @@ index f971fb4..f509fcb 100644
#include <private/qwasmmediadevices_p.h>
#endif
@@ -66,7 +66,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance()
devicesHolder.nativeInstance = new QPulseAudioMediaDevices;
@@ -41,7 +41,7 @@ std::unique_ptr<QPlatformMediaDevices> QPlatformMediaDevices::create()
return std::make_unique<QPulseAudioMediaDevices>();
#elif defined(Q_OS_QNX)
devicesHolder.nativeInstance = new QQnxMediaDevices;
return std::make_unique<QQnxMediaDevices>();
-#elif defined(Q_OS_WASM)
+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU)
devicesHolder.nativeInstance = new QWasmMediaDevices;
return std::make_unique<QWasmMediaDevices>();
#else
devicesHolder.nativeInstance = new QPlatformMediaDevices;
return std::make_unique<QPlatformMediaDevices>();
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 <AL/al.h>
#include <AL/alc.h>
#include <QDataStream>
@@ -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 <QMapIterator>
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 <std::string, QAudioDevice> m_audioOutputs;
QMap <std::string, QAudioDevice> m_audioInputs;
QMap <std::string, QCameraDevice> 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::ContextError>
MediaDataHolder::recreateAVFormatContext(const QUrl &media, QIODevice *stream)
@@ -156,7 +156,11 @@ namespace {
QMaybe<AVFormatContextUPtr, MediaDataHolder::ContextError>
loadMedia(const QUrl &mediaUrl, QIODevice *stream, const std::shared_ptr<ICancelToken> &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 <std::string, QAudioDevice> m_audioOutputs;
QMap <std::string, QAudioDevice> m_audioInputs;
--
2.42.0
2.43.2

View File

@@ -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"