diff options
author | Jøger Hansegård <joger.hansegard@qt.io> | 2024-01-29 20:31:00 +0100 |
---|---|---|
committer | Jøger Hansegård <joger.hansegard@qt.io> | 2024-02-28 00:17:50 +0100 |
commit | 5fcfa339bc45460cfadb645620f0fa1e3f32ed20 (patch) | |
tree | a8c0c1cb890228a87fb2dd58ecc15ecd0e938c6e /src/multimedia/audio | |
parent | a8757116f014f465b643ca9446cea8f82af8e8da (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.cpp | 2 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiosource.cpp | 2 | ||||
-rw-r--r-- | src/multimedia/audio/qsoundeffect.cpp | 2 |
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() |