mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-22 19:50:05 +02:00
qt6_multimedia: bump version
This commit is contained in:
@@ -1,212 +0,0 @@
|
||||
From d80bbe2bfdbecd939303fd196d806e7a46166d30 Mon Sep 17 00:00:00 2001
|
||||
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
||||
Date: Sun, 2 Oct 2022 20:28:04 +1000
|
||||
Subject: Enable OpenAL (wasm) audio backend for Haiku
|
||||
|
||||
|
||||
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
|
||||
index 651c7ee..6b97620 100644
|
||||
--- a/src/multimedia/CMakeLists.txt
|
||||
+++ b/src/multimedia/CMakeLists.txt
|
||||
@@ -212,7 +212,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf
|
||||
ksuser
|
||||
)
|
||||
|
||||
-qt_internal_extend_target(Multimedia CONDITION WASM
|
||||
+qt_internal_extend_target(Multimedia CONDITION WASM OR HAIKU
|
||||
SOURCES
|
||||
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 efcadfc..72a7d5f 100644
|
||||
--- a/src/multimedia/configure.cmake
|
||||
+++ b/src/multimedia/configure.cmake
|
||||
@@ -73,7 +73,7 @@ qt_feature("ffmpeg" PRIVATE
|
||||
LABEL "FFmpeg"
|
||||
ENABLE INPUT_ffmpeg STREQUAL 'yes'
|
||||
DISABLE INPUT_ffmpeg STREQUAL 'no'
|
||||
- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio)
|
||||
+ CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR HAIKU OR QT_FEATURE_pulseaudio)
|
||||
)
|
||||
qt_feature("alsa" PUBLIC PRIVATE
|
||||
LABEL "ALSA (experimental)"
|
||||
@@ -200,5 +200,5 @@ qt_configure_end_summary_section() # end of "Qt Multimedia" section
|
||||
qt_configure_add_report_entry(
|
||||
TYPE WARNING
|
||||
MESSAGE "No backend for low level audio found."
|
||||
- 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
|
||||
+ 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 26e62d6..bab5ae5 100644
|
||||
--- a/src/multimedia/platform/qplatformmediadevices.cpp
|
||||
+++ b/src/multimedia/platform/qplatformmediadevices.cpp
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <qpulseaudiomediadevices_p.h>
|
||||
#elif defined(Q_OS_QNX)
|
||||
#include <qqnxmediadevices_p.h>
|
||||
-#elif defined(Q_OS_WASM)
|
||||
+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU)
|
||||
#include <private/qwasmmediadevices_p.h>
|
||||
#endif
|
||||
|
||||
@@ -63,7 +63,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance()
|
||||
holder.nativeInstance = new QPulseAudioMediaDevices;
|
||||
#elif defined(Q_OS_QNX)
|
||||
holder.nativeInstance = new QQnxMediaDevices;
|
||||
-#elif defined(Q_OS_WASM)
|
||||
+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU)
|
||||
holder.nativeInstance = new QWasmMediaDevices;
|
||||
#endif
|
||||
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
index b8f3532..81ebebd 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
@@ -2,9 +2,11 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#include "qwasmaudiodevice_p.h"
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/val.h>
|
||||
#include <emscripten/bind.h>
|
||||
+#endif
|
||||
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
@@ -35,6 +37,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
// FIXME: firefox
|
||||
// An AudioContext was prevented from starting automatically.
|
||||
// It must be created or resumed after a user gesture on the page.
|
||||
+#ifndef Q_OS_HAIKU
|
||||
emscripten::val audioContext = emscripten::val::global("window")["AudioContext"].new_();
|
||||
if (audioContext == emscripten::val::undefined())
|
||||
audioContext = emscripten::val::global("window")["webkitAudioContext"].new_();
|
||||
@@ -44,6 +47,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
audioContext.call<void>("close");
|
||||
preferredFormat.setSampleRate(sRate);
|
||||
}
|
||||
+#endif
|
||||
|
||||
auto f = QAudioFormat::Float;
|
||||
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
index 7c6a5cf..ee63fcf 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
@@ -4,7 +4,9 @@
|
||||
#include "qwasmaudiosink_p.h"
|
||||
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
+#endif
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <QDebug>
|
||||
@@ -209,7 +211,7 @@ void QWasmAudioSink::resume()
|
||||
alSourcePlay(aldata->source);
|
||||
}
|
||||
|
||||
-int QWasmAudioSink::bytesFree() const
|
||||
+qsizetype QWasmAudioSink::bytesFree() const
|
||||
{
|
||||
int processed;
|
||||
alGetSourcei(aldata->source, AL_BUFFERS_PROCESSED, &processed);
|
||||
@@ -217,7 +219,7 @@ int QWasmAudioSink::bytesFree() const
|
||||
+ processed) : 0;
|
||||
}
|
||||
|
||||
-void QWasmAudioSink::setBufferSize(int value)
|
||||
+void QWasmAudioSink::setBufferSize(qsizetype value)
|
||||
{
|
||||
if (m_running)
|
||||
return;
|
||||
@@ -225,7 +227,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 c165f28..be00ecf 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiosink_p.h
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosink_p.h
|
||||
@@ -69,9 +69,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 bc7b34b..628720a 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiosource.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosource.cpp
|
||||
@@ -3,7 +3,10 @@
|
||||
|
||||
#include "qwasmaudiosource_p.h"
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
+#endif
|
||||
+
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <QDataStream>
|
||||
@@ -215,7 +218,7 @@ void QWasmAudioSource::resume()
|
||||
alcCaptureStart(aldata->device);
|
||||
}
|
||||
|
||||
-int QWasmAudioSource::bytesReady() const
|
||||
+qsizetype QWasmAudioSource::bytesReady() const
|
||||
{
|
||||
if (!m_running)
|
||||
return 0;
|
||||
@@ -224,14 +227,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 96cb94d..f08455c 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.36.1
|
||||
|
||||
469
dev-qt/qt6-multimedia/patches/qt6_multimedia-6.5.0.patchset
Normal file
469
dev-qt/qt6-multimedia/patches/qt6_multimedia-6.5.0.patchset
Normal file
@@ -0,0 +1,469 @@
|
||||
From 79f179d950a03ae20ada90d57d328985962a13a8 Mon Sep 17 00:00:00 2001
|
||||
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
||||
Date: Tue, 4 Apr 2023 10:29:49 +1000
|
||||
Subject: Enable OpenAL (wasm) audio backend for Haiku
|
||||
|
||||
|
||||
diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt
|
||||
index d46d783..b0d600d 100644
|
||||
--- a/src/multimedia/CMakeLists.txt
|
||||
+++ b/src/multimedia/CMakeLists.txt
|
||||
@@ -220,7 +220,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf
|
||||
ksuser
|
||||
)
|
||||
|
||||
-qt_internal_extend_target(Multimedia CONDITION WASM
|
||||
+qt_internal_extend_target(Multimedia CONDITION WASM OR HAIKU
|
||||
SOURCES
|
||||
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 7fdb0af..eea89c9 100644
|
||||
--- a/src/multimedia/configure.cmake
|
||||
+++ b/src/multimedia/configure.cmake
|
||||
@@ -76,7 +76,7 @@ qt_feature("ffmpeg" PRIVATE
|
||||
LABEL "FFmpeg"
|
||||
ENABLE INPUT_ffmpeg STREQUAL 'yes'
|
||||
DISABLE INPUT_ffmpeg STREQUAL 'no'
|
||||
- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio)
|
||||
+ CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR HAIKU OR QT_FEATURE_pulseaudio)
|
||||
)
|
||||
qt_feature("alsa" PUBLIC PRIVATE
|
||||
LABEL "ALSA (experimental)"
|
||||
@@ -203,5 +203,5 @@ qt_configure_end_summary_section() # end of "Qt Multimedia" section
|
||||
qt_configure_add_report_entry(
|
||||
TYPE WARNING
|
||||
MESSAGE "No backend for low level audio found."
|
||||
- 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
|
||||
+ 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 03f1af7..2404486 100644
|
||||
--- a/src/multimedia/platform/qplatformmediadevices.cpp
|
||||
+++ b/src/multimedia/platform/qplatformmediadevices.cpp
|
||||
@@ -23,7 +23,7 @@
|
||||
#include <qpulseaudiomediadevices_p.h>
|
||||
#elif defined(Q_OS_QNX)
|
||||
#include <qqnxmediadevices_p.h>
|
||||
-#elif defined(Q_OS_WASM)
|
||||
+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU)
|
||||
#include <private/qwasmmediadevices_p.h>
|
||||
#endif
|
||||
|
||||
@@ -64,7 +64,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance()
|
||||
devicesHolder.nativeInstance = new QPulseAudioMediaDevices;
|
||||
#elif defined(Q_OS_QNX)
|
||||
devicesHolder.nativeInstance = new QQnxMediaDevices;
|
||||
-#elif defined(Q_OS_WASM)
|
||||
+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU)
|
||||
devicesHolder.nativeInstance = new QWasmMediaDevices;
|
||||
#else
|
||||
devicesHolder.nativeInstance = new QPlatformMediaDevices;
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
index c87a0ad..3835ac2 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
@@ -2,9 +2,11 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#include "qwasmaudiodevice_p.h"
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/val.h>
|
||||
#include <emscripten/bind.h>
|
||||
+#endif
|
||||
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
@@ -35,6 +37,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
// FIXME: firefox
|
||||
// An AudioContext was prevented from starting automatically.
|
||||
// It must be created or resumed after a user gesture on the page.
|
||||
+#ifndef Q_OS_HAIKU
|
||||
emscripten::val audioContext = emscripten::val::global("window")["AudioContext"].new_();
|
||||
if (audioContext == emscripten::val::undefined())
|
||||
audioContext = emscripten::val::global("window")["webkitAudioContext"].new_();
|
||||
@@ -45,6 +48,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
audioContext.call<void>("close");
|
||||
preferredFormat.setSampleRate(sRate);
|
||||
}
|
||||
+#endif
|
||||
|
||||
auto f = QAudioFormat::Float;
|
||||
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
index 4c698f3..35b8218 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
@@ -4,7 +4,9 @@
|
||||
#include "qwasmaudiosink_p.h"
|
||||
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
+#endif
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <QDebug>
|
||||
@@ -212,7 +214,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 +222,7 @@ int QWasmAudioSink::bytesFree() const
|
||||
+ processed) : 0;
|
||||
}
|
||||
|
||||
-void QWasmAudioSink::setBufferSize(int value)
|
||||
+void QWasmAudioSink::setBufferSize(qsizetype value)
|
||||
{
|
||||
if (m_running)
|
||||
return;
|
||||
@@ -228,7 +230,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
|
||||
--- a/src/multimedia/wasm/qwasmaudiosource.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosource.cpp
|
||||
@@ -3,7 +3,10 @@
|
||||
|
||||
#include "qwasmaudiosource_p.h"
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
+#endif
|
||||
+
|
||||
#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.37.3
|
||||
|
||||
|
||||
From f1752f9116ca1dc25180d23202818bbf21f9966f Mon Sep 17 00:00:00 2001
|
||||
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
||||
Date: Sat, 8 Apr 2023 00:33:47 +1000
|
||||
Subject: Improve openal backend for Haiku
|
||||
|
||||
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
index 3835ac2..0b9c806 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiodevice.cpp
|
||||
@@ -20,7 +20,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
|
||||
isDefault = isDef;
|
||||
minimumChannelCount = 1;
|
||||
- maximumChannelCount = 2;
|
||||
+ maximumChannelCount = 8;
|
||||
minimumSampleRate = 8000;
|
||||
maximumSampleRate = 96000; // js AudioContext max according to docs
|
||||
|
||||
@@ -48,6 +48,8 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is
|
||||
audioContext.call<void>("close");
|
||||
preferredFormat.setSampleRate(sRate);
|
||||
}
|
||||
+#else
|
||||
+ preferredFormat.setSampleRate(48000);
|
||||
#endif
|
||||
|
||||
auto f = QAudioFormat::Float;
|
||||
diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
index 35b8218..cf73873 100644
|
||||
--- a/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmaudiosink.cpp
|
||||
@@ -8,16 +8,19 @@
|
||||
#include <emscripten.h>
|
||||
#endif
|
||||
#include <AL/al.h>
|
||||
+#include <AL/alext.h>
|
||||
#include <AL/alc.h>
|
||||
#include <QDebug>
|
||||
#include <QtMath>
|
||||
#include <QIODevice>
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
// non native al formats (AL_EXT_float32)
|
||||
#define AL_FORMAT_MONO_FLOAT32 0x10010
|
||||
#define AL_FORMAT_STEREO_FLOAT32 0x10011
|
||||
+#endif
|
||||
|
||||
-constexpr unsigned int DEFAULT_BUFFER_DURATION = 50'000;
|
||||
+constexpr unsigned int DEFAULT_BUFFER_DURATION = 6'000;
|
||||
|
||||
class ALData {
|
||||
public:
|
||||
@@ -99,6 +102,18 @@ void QWasmAudioSink::start(bool mode)
|
||||
case 2:
|
||||
aldata->format = AL_FORMAT_STEREO8;
|
||||
break;
|
||||
+ case 4:
|
||||
+ aldata->format = AL_FORMAT_QUAD8;
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ aldata->format = AL_FORMAT_51CHN8;
|
||||
+ break;
|
||||
+ case 7:
|
||||
+ aldata->format = AL_FORMAT_61CHN8;
|
||||
+ break;
|
||||
+ case 8:
|
||||
+ aldata->format = AL_FORMAT_71CHN8;
|
||||
+ break;
|
||||
default:
|
||||
return formatError();
|
||||
}
|
||||
@@ -111,6 +126,18 @@ void QWasmAudioSink::start(bool mode)
|
||||
case 2:
|
||||
aldata->format = AL_FORMAT_STEREO16;
|
||||
break;
|
||||
+ case 4:
|
||||
+ aldata->format = AL_FORMAT_QUAD16;
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ aldata->format = AL_FORMAT_51CHN16;
|
||||
+ break;
|
||||
+ case 7:
|
||||
+ aldata->format = AL_FORMAT_61CHN16;
|
||||
+ break;
|
||||
+ case 8:
|
||||
+ aldata->format = AL_FORMAT_71CHN16;
|
||||
+ break;
|
||||
default:
|
||||
return formatError();
|
||||
}
|
||||
@@ -123,6 +150,18 @@ void QWasmAudioSink::start(bool mode)
|
||||
case 2:
|
||||
aldata->format = AL_FORMAT_STEREO_FLOAT32;
|
||||
break;
|
||||
+ case 4:
|
||||
+ aldata->format = AL_FORMAT_QUAD16;
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ aldata->format = AL_FORMAT_51CHN32;
|
||||
+ break;
|
||||
+ case 7:
|
||||
+ aldata->format = AL_FORMAT_61CHN32;
|
||||
+ break;
|
||||
+ case 8:
|
||||
+ aldata->format = AL_FORMAT_71CHN32;
|
||||
+ break;
|
||||
default:
|
||||
return formatError();
|
||||
}
|
||||
diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp
|
||||
index 189e8c5..35c683b 100644
|
||||
--- a/src/multimedia/wasm/qwasmmediadevices.cpp
|
||||
+++ b/src/multimedia/wasm/qwasmmediadevices.cpp
|
||||
@@ -64,6 +64,7 @@ QPlatformAudioSink *QWasmMediaDevices::createAudioSink(const QAudioDevice &devic
|
||||
|
||||
void QWasmMediaDevices::getMediaDevices()
|
||||
{
|
||||
+#ifndef Q_OS_HAIKU
|
||||
emscripten::val navigator = emscripten::val::global("navigator");
|
||||
m_jsMediaDevicesInterface = navigator["mediaDevices"];
|
||||
|
||||
@@ -225,6 +226,7 @@ void QWasmMediaDevices::getMediaDevices()
|
||||
QStringLiteral("enumerateDevices"),
|
||||
std::move(enumerateDevicesCallback));
|
||||
});
|
||||
+#endif
|
||||
}
|
||||
|
||||
void QWasmMediaDevices::getOpenALAudioDevices()
|
||||
@@ -234,20 +236,34 @@ 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)) {
|
||||
+#ifndef Q_OS_HAIKU
|
||||
m_audioInputs.insert(capture,
|
||||
(new QWasmAudioDevice(capture, "WebAssembly audio capture device",
|
||||
true, QAudioDevice::Input))
|
||||
->create());
|
||||
+#else
|
||||
+ m_audioInputs.insert(capture,
|
||||
+ (new QWasmAudioDevice(capture, "Haiku audio capture device",
|
||||
+ true, QAudioDevice::Input))
|
||||
+ ->create());
|
||||
+#endif
|
||||
emit audioInputsChanged();
|
||||
}
|
||||
|
||||
auto playback = alcGetString(nullptr, ALC_DEFAULT_DEVICE_SPECIFIER);
|
||||
// present even if there is no playback device
|
||||
if (playback && !m_audioOutputs.contains(capture)) {
|
||||
+#ifndef Q_OS_HAIKU
|
||||
m_audioOutputs.insert(playback,
|
||||
(new QWasmAudioDevice(playback, "WebAssembly audio playback device",
|
||||
true, QAudioDevice::Output))
|
||||
->create());
|
||||
+#else
|
||||
+ m_audioOutputs.insert(playback,
|
||||
+ (new QWasmAudioDevice(playback, "Haiku audio playback device",
|
||||
+ true, QAudioDevice::Output))
|
||||
+ ->create());
|
||||
+#endif
|
||||
emit audioOutputsChanged();
|
||||
}
|
||||
}
|
||||
diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h
|
||||
index dfd511e..a761db9 100644
|
||||
--- a/src/multimedia/wasm/qwasmmediadevices_p.h
|
||||
+++ b/src/multimedia/wasm/qwasmmediadevices_p.h
|
||||
@@ -19,16 +19,20 @@
|
||||
|
||||
#include <private/qplatformvideodevices_p.h>
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <QtCore/private/qstdweb_p.h>
|
||||
+#endif
|
||||
#include <qaudio.h>
|
||||
#include <qaudiodevice.h>
|
||||
#include <qcameradevice.h>
|
||||
#include <qset.h>
|
||||
#include <QtCore/qloggingcategory.h>
|
||||
|
||||
+#ifndef Q_OS_HAIKU
|
||||
#include <emscripten.h>
|
||||
#include <emscripten/val.h>
|
||||
#include <emscripten/bind.h>
|
||||
+#endif
|
||||
#include <QMapIterator>
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@@ -72,13 +76,16 @@ private:
|
||||
QMap <std::string, QAudioDevice> m_audioInputs;
|
||||
QMap <std::string, QCameraDevice> m_cameraDevices;
|
||||
|
||||
-
|
||||
+#ifndef Q_OS_HAIKU
|
||||
std::unique_ptr<qstdweb::EventCallback> m_deviceChangedCallback;
|
||||
+#endif
|
||||
|
||||
bool m_videoInputsAdded = false;
|
||||
bool m_audioInputsAdded = false;
|
||||
bool m_audioOutputsAdded = false;
|
||||
+#ifndef Q_OS_HAIKU
|
||||
emscripten::val m_jsMediaDevicesInterface = emscripten::val::undefined();
|
||||
+#endif
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
--
|
||||
2.37.3
|
||||
|
||||
|
||||
From 050fcdead0ce8e1fc5b40df3bdf85b75753d0ef0 Mon Sep 17 00:00:00 2001
|
||||
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
||||
Date: Sat, 8 Apr 2023 00:35:43 +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 eb4f35b..0466bdc 100644
|
||||
--- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp
|
||||
+++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp
|
||||
@@ -117,7 +117,7 @@ MediaDataHolder::recreateAVFormatContext(const QUrl &media, QIODevice *stream)
|
||||
{
|
||||
*this = MediaDataHolder{};
|
||||
|
||||
- QByteArray url = media.toEncoded(QUrl::PreferLocalFile);
|
||||
+ QByteArray url = media.isLocalFile() ? QFile::encodeName(media.toString(QUrl::PreferLocalFile)) : media.toEncoded();
|
||||
|
||||
AVFormatContext *context = nullptr;
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
||||
|
||||
From 91c081a8ee0efa7a3da40a91fdf37340af6d7e38 Mon Sep 17 00:00:00 2001
|
||||
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
||||
Date: Sat, 8 Apr 2023 11:45:50 +1000
|
||||
Subject: Add missing include
|
||||
|
||||
|
||||
diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp
|
||||
index 0466bdc..7ccd386 100644
|
||||
--- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp
|
||||
+++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "qffmpegmediaformatinfo_p.h"
|
||||
#include "qiodevice.h"
|
||||
#include "qdatetime.h"
|
||||
+#include "qfile.h"
|
||||
#include "qloggingcategory.h"
|
||||
|
||||
#include <optional>
|
||||
--
|
||||
2.37.3
|
||||
|
||||
@@ -4,13 +4,13 @@ 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-2022 The Qt Company Ltd."
|
||||
COPYRIGHT="2015-2023 The Qt Company Ltd."
|
||||
LICENSE="GNU LGPL v2.1
|
||||
GNU LGPL v3
|
||||
GNU FDL v1"
|
||||
REVISION="2"
|
||||
REVISION="1"
|
||||
SOURCE_URI="https://download.qt.io/official_releases/qt/${portVersion%.*}/$portVersion/submodules/qtmultimedia-everywhere-src-$portVersion.tar.xz"
|
||||
CHECKSUM_SHA256="e82e8e847cae2a951a11db05b6d10a22b21e3a1d72e06a7781cce4bd197e796f"
|
||||
CHECKSUM_SHA256="9480d0c73abdd01aec4899e340938cec046a3f404b9f9ed945288be574dca146"
|
||||
SOURCE_DIR="qtmultimedia-everywhere-src-$portVersion"
|
||||
PATCHES="qt6_multimedia-$portVersion.patchset"
|
||||
|
||||
@@ -26,20 +26,9 @@ PROVIDES="
|
||||
"
|
||||
REQUIRES="
|
||||
haiku$secondaryArchSuffix
|
||||
lib:libavcodec$secondaryArchSuffix
|
||||
lib:libavformat$secondaryArchSuffix
|
||||
lib:libgl$secondaryArchSuffix
|
||||
lib:libglib_2.0$secondaryArchSuffix
|
||||
lib:libgobject_2.0$secondaryArchSuffix
|
||||
lib:libgstapp_1.0$secondaryArchSuffix
|
||||
lib:libgstaudio_1.0$secondaryArchSuffix
|
||||
lib:libgstallocators_1.0$secondaryArchSuffix
|
||||
lib:libgstbadaudio_1.0$secondaryArchSuffix
|
||||
lib:libgstbase_1.0$secondaryArchSuffix
|
||||
lib:libgstpbutils_1.0$secondaryArchSuffix
|
||||
lib:libgstreamer_1.0$secondaryArchSuffix
|
||||
lib:libgsttag_1.0$secondaryArchSuffix
|
||||
lib:libgstvideo_1.0$secondaryArchSuffix
|
||||
lib:libgstphotography_1.0$secondaryArchSuffix
|
||||
lib:libgthread_2.0$secondaryArchSuffix
|
||||
lib:libintl$secondaryArchSuffix
|
||||
lib:libopenal$secondaryArchSuffix
|
||||
lib:libQt6Core$secondaryArchSuffix
|
||||
@@ -49,6 +38,7 @@ REQUIRES="
|
||||
lib:libQt6QmlModels$secondaryArchSuffix
|
||||
lib:libQt6ShaderTools$secondaryArchSuffix
|
||||
lib:libQt6Svg$secondaryArchSuffix
|
||||
lib:libvulkan$secondaryArchSuffix
|
||||
lib:libz$secondaryArchSuffix
|
||||
"
|
||||
|
||||
@@ -68,20 +58,9 @@ REQUIRES_devel="
|
||||
BUILD_REQUIRES="
|
||||
haiku${secondaryArchSuffix}_devel
|
||||
devel:libcrypto$secondaryArchSuffix
|
||||
devel:libavcodec$secondaryArchSuffix >= 59
|
||||
devel:libgl$secondaryArchSuffix
|
||||
devel:libglib_2.0$secondaryArchSuffix
|
||||
devel:libgobject_2.0$secondaryArchSuffix
|
||||
devel:libgstapp_1.0$secondaryArchSuffix
|
||||
devel:libgstaudio_1.0$secondaryArchSuffix
|
||||
devel:libgstallocators_1.0$secondaryArchSuffix
|
||||
devel:libgstbadaudio_1.0$secondaryArchSuffix
|
||||
devel:libgstbase_1.0$secondaryArchSuffix
|
||||
devel:libgstpbutils_1.0$secondaryArchSuffix
|
||||
devel:libgstreamer_1.0$secondaryArchSuffix
|
||||
devel:libgstvideo_1.0$secondaryArchSuffix
|
||||
devel:libgstphotography_1.0$secondaryArchSuffix
|
||||
devel:libopenal$secondaryArchSuffix
|
||||
devel:liborc_0.4$secondaryArchSuffix
|
||||
devel:libQt6Core$secondaryArchSuffix
|
||||
devel:libQt6Gui$secondaryArchSuffix
|
||||
devel:libQt6Qml$secondaryArchSuffix
|
||||
@@ -90,6 +69,7 @@ BUILD_REQUIRES="
|
||||
devel:libQt6ShaderTools$secondaryArchSuffix
|
||||
devel:libQt6Svg$secondaryArchSuffix
|
||||
devel:libssl$secondaryArchSuffix
|
||||
devel:libvulkan$secondaryArchSuffix
|
||||
devel:libz$secondaryArchSuffix
|
||||
"
|
||||
BUILD_PREREQUIRES="
|
||||
@@ -102,7 +82,7 @@ BUILD_PREREQUIRES="
|
||||
cmd:ninja
|
||||
cmd:perl
|
||||
cmd:pkg_config$secondaryArchSuffix
|
||||
cmd:python3.7
|
||||
cmd:python3
|
||||
cmd:sed
|
||||
cmd:xargs
|
||||
"
|
||||
@@ -118,18 +98,29 @@ BUILD()
|
||||
|
||||
cmake -B build -S $sourceDir -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_CXX_FLAGS=-fPIC
|
||||
-DCMAKE_CXX_FLAGS=-fPIC \
|
||||
-DFEATURE_linux_dmabuf=OFF
|
||||
|
||||
find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \;
|
||||
|
||||
ninja -C build $jobArgs
|
||||
ninja -v -C build $jobArgs
|
||||
}
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
ninja -C build install
|
||||
|
||||
prepareInstalledDevelLibs libQt6Multimedia libQt6MultimediaQuick libQt6MultimediaWidgets libQt6SpatialAudio libQt6BundledResonanceAudio
|
||||
prepareInstalledDevelLibs \
|
||||
libQt6Multimedia \
|
||||
libQt6MultimediaQuick \
|
||||
libQt6MultimediaWidgets \
|
||||
libQt6SpatialAudio \
|
||||
libQt6BundledResonanceAudio
|
||||
|
||||
# fix pkgconfig files
|
||||
fixPkgconfig
|
||||
sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \
|
||||
$developLibDir/pkgconfig/*.pc
|
||||
|
||||
cd $libDir
|
||||
for i in lib*.so.6.*;do
|
||||
Reference in New Issue
Block a user