summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio
diff options
context:
space:
mode:
authorJøger Hansegård <joger.hansegard@qt.io>2024-01-29 20:31:00 +0100
committerJøger Hansegård <joger.hansegard@qt.io>2024-02-28 00:17:50 +0100
commit5fcfa339bc45460cfadb645620f0fa1e3f32ed20 (patch)
treea8c0c1cb890228a87fb2dd58ecc15ecd0e938c6e /src/multimedia/audio
parenta8757116f014f465b643ca9446cea8f82af8e8da (diff)
Move ownership of media devices to platform media integration
This change removes the PlatformMediaDevices singleton instance, and moves ownership to the platform integration layer. This makes it easier to reason around object lifetimes during destruction, and will later allow us to fix issues on the Windows Platform related to uninitialization of the Windows Media Foundation. This uninitialization must be done before static destruction takes place. As a side effect, we no longer need hooks to mock media devices in unit tests. If no media backend is available, we use a fallback media integration that provides basic support needed by QMediaDevices, QAudioDevice, QSoundEffect, QAudioSink, and QAudioSource. Therefore we don't need applications that only rely on basic services to ship a full multimedia backend. Reimplements a6bb5f743dd404bce3734ad0c81449b8c4bf7b29 Task-number: QTBUG-120198 Pick-to: 6.7 6.6 6.5 Change-Id: If7ee7a4892e2d84e1af71b5f867cc24d950749c2 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Diffstat (limited to 'src/multimedia/audio')
-rw-r--r--src/multimedia/audio/qaudiosink.cpp2
-rw-r--r--src/multimedia/audio/qaudiosource.cpp2
-rw-r--r--src/multimedia/audio/qsoundeffect.cpp2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/multimedia/audio/qaudiosink.cpp b/src/multimedia/audio/qaudiosink.cpp
index cb99f384e..aac96c342 100644
--- a/src/multimedia/audio/qaudiosink.cpp
+++ b/src/multimedia/audio/qaudiosink.cpp
@@ -87,7 +87,7 @@ QAudioSink::QAudioSink(const QAudioFormat &format, QObject *parent)
QAudioSink::QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format, QObject *parent):
QObject(parent)
{
- d = QPlatformMediaDevices::instance()->audioOutputDevice(format, audioDevice, parent);
+ d = QPlatformMediaIntegration::instance()->mediaDevices()->audioOutputDevice(format, audioDevice, parent);
if (d)
connect(d, &QPlatformAudioSink::stateChanged, this, [this](QAudio::State state) {
// if the signal has been emitted from another thread,
diff --git a/src/multimedia/audio/qaudiosource.cpp b/src/multimedia/audio/qaudiosource.cpp
index c92205c22..5e59a4798 100644
--- a/src/multimedia/audio/qaudiosource.cpp
+++ b/src/multimedia/audio/qaudiosource.cpp
@@ -96,7 +96,7 @@ QAudioSource::QAudioSource(const QAudioFormat &format, QObject *parent)
QAudioSource::QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat &format, QObject *parent):
QObject(parent)
{
- d = QPlatformMediaDevices::instance()->audioInputDevice(format, audioDevice, parent);
+ d = QPlatformMediaIntegration::instance()->mediaDevices()->audioInputDevice(format, audioDevice, parent);
if (d) {
connect(d, &QPlatformAudioSource::stateChanged, this, [this](QAudio::State state) {
// if the signal has been emitted from another thread,
diff --git a/src/multimedia/audio/qsoundeffect.cpp b/src/multimedia/audio/qsoundeffect.cpp
index 1ffe4b800..c793cf36b 100644
--- a/src/multimedia/audio/qsoundeffect.cpp
+++ b/src/multimedia/audio/qsoundeffect.cpp
@@ -99,7 +99,7 @@ QSoundEffectPrivate::QSoundEffectPrivate(QSoundEffect *q, const QAudioDevice &au
{
open(QIODevice::ReadOnly);
- QPlatformMediaDevices::instance()->prepareAudio();
+ QPlatformMediaIntegration::instance()->mediaDevices()->prepareAudio();
}
void QSoundEffectPrivate::sampleReady()