From 85b88997c1c25d915a317046cd8dce26903238cf Mon Sep 17 00:00:00 2001 From: Piotr Srebrny Date: Thu, 15 Dec 2022 17:16:18 +0100 Subject: [PATCH] [PATCH] Provide default implementation for QPlatformMediaDevices In case no audio backend is available we should provide some default implementation for QPlatformDevices otherwise the code crashes on an attempt list audio devices. As a bonus clean some leftovers of video devices interface. Fixes: QTBUG-108221 Change-Id: I8d7e5ebe2ec98ba9381fae429f359b8ffaea3bb6 Reviewed-by: Artem Dyomin Reviewed-by: Lars Knoll (cherry picked from commit ab49644bea444d105e6fa6ca246f21eccd7a67e0) Gbp-Pq: Name provide_default_implementation_for_qplatformmediadevices.patch --- src/multimedia/alsa/qalsamediadevices.cpp | 5 ----- src/multimedia/alsa/qalsamediadevices_p.h | 1 - .../platform/qplatformmediadevices.cpp | 19 ++++++++++++++++++- .../platform/qplatformmediadevices_p.h | 12 +++++------- .../pulseaudio/qpulseaudiomediadevices.cpp | 5 ----- .../pulseaudio/qpulseaudiomediadevices_p.h | 1 - src/multimedia/wasm/qwasmmediadevices.cpp | 5 ----- src/multimedia/wasm/qwasmmediadevices_p.h | 1 - 8 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/multimedia/alsa/qalsamediadevices.cpp b/src/multimedia/alsa/qalsamediadevices.cpp index 9f3b3d9..cc37e06 100644 --- a/src/multimedia/alsa/qalsamediadevices.cpp +++ b/src/multimedia/alsa/qalsamediadevices.cpp @@ -74,11 +74,6 @@ QList QAlsaMediaDevices::audioOutputs() const return availableDevices(QAudioDevice::Output); } -QList QAlsaMediaDevices::videoInputs() const -{ - return {}; -} - QPlatformAudioSource *QAlsaMediaDevices::createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) { diff --git a/src/multimedia/alsa/qalsamediadevices_p.h b/src/multimedia/alsa/qalsamediadevices_p.h index 612ea21..d9fbb7c 100644 --- a/src/multimedia/alsa/qalsamediadevices_p.h +++ b/src/multimedia/alsa/qalsamediadevices_p.h @@ -30,7 +30,6 @@ public: QList audioInputs() const override; QList audioOutputs() const override; - QList videoInputs() const override; QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) override; QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo, diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp index 867edb7..6944e8c 100644 --- a/src/multimedia/platform/qplatformmediadevices.cpp +++ b/src/multimedia/platform/qplatformmediadevices.cpp @@ -6,6 +6,7 @@ #include "qaudiodevice.h" #include "qcameradevice.h" #include "qaudiosystem_p.h" +#include "qaudiodevice.h" #include #include @@ -65,6 +66,8 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance() holder.nativeInstance = new QQnxMediaDevices; #elif defined(Q_OS_WASM) holder.nativeInstance = new QWasmMediaDevices; +#else + holder.nativeInstance = new QPlatformMediaDevices; #endif holder.instance = holder.nativeInstance; @@ -82,11 +85,25 @@ void QPlatformMediaDevices::setDevices(QPlatformMediaDevices *devices) QPlatformMediaDevices::~QPlatformMediaDevices() = default; -QList QPlatformMediaDevices::videoInputs() const +QList QPlatformMediaDevices::audioInputs() const +{ + return {}; +} + +QList QPlatformMediaDevices::audioOutputs() const { return {}; } +QPlatformAudioSource *QPlatformMediaDevices::createAudioSource(const QAudioDevice &, QObject *) +{ + return nullptr; +} +QPlatformAudioSink *QPlatformMediaDevices::createAudioSink(const QAudioDevice &, QObject *) +{ + return nullptr; +} + QPlatformAudioSource *QPlatformMediaDevices::audioInputDevice(const QAudioFormat &format, const QAudioDevice &deviceInfo, QObject *parent) diff --git a/src/multimedia/platform/qplatformmediadevices_p.h b/src/multimedia/platform/qplatformmediadevices_p.h index 5786c28..3cde651 100644 --- a/src/multimedia/platform/qplatformmediadevices_p.h +++ b/src/multimedia/platform/qplatformmediadevices_p.h @@ -38,13 +38,11 @@ public: static void setDevices(QPlatformMediaDevices *); static QPlatformMediaDevices *instance(); - virtual QList audioInputs() const = 0; - virtual QList audioOutputs() const = 0; - virtual QList videoInputs() const; - virtual QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo, - QObject *parent) = 0; - virtual QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo, - QObject *parent) = 0; + virtual QList audioInputs() const; + virtual QList audioOutputs() const; + + virtual QPlatformAudioSource *createAudioSource(const QAudioDevice &, QObject *parent); + virtual QPlatformAudioSink *createAudioSink(const QAudioDevice &, QObject *parent); QPlatformAudioSource *audioInputDevice(const QAudioFormat &format, const QAudioDevice &deviceInfo, QObject *parent); diff --git a/src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp b/src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp index d744e04..8a28c39 100644 --- a/src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp +++ b/src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp @@ -33,11 +33,6 @@ QList QPulseAudioMediaDevices::audioOutputs() const return pulseEngine->availableDevices(QAudioDevice::Output); } -QList QPulseAudioMediaDevices::videoInputs() const -{ - return {}; -} - QPlatformAudioSource *QPulseAudioMediaDevices::createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) { diff --git a/src/multimedia/pulseaudio/qpulseaudiomediadevices_p.h b/src/multimedia/pulseaudio/qpulseaudiomediadevices_p.h index 36435b2..094dc39 100644 --- a/src/multimedia/pulseaudio/qpulseaudiomediadevices_p.h +++ b/src/multimedia/pulseaudio/qpulseaudiomediadevices_p.h @@ -31,7 +31,6 @@ public: QList audioInputs() const override; QList audioOutputs() const override; - QList videoInputs() const override; QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) override; QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo, diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp index 5244236..abdc5c1 100644 --- a/src/multimedia/wasm/qwasmmediadevices.cpp +++ b/src/multimedia/wasm/qwasmmediadevices.cpp @@ -38,11 +38,6 @@ QList QWasmMediaDevices::audioOutputs() const return m_outs; } -QList QWasmMediaDevices::videoInputs() const -{ - return {}; -} - QPlatformAudioSource *QWasmMediaDevices::createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) { diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h index b19bec3..df79c56 100644 --- a/src/multimedia/wasm/qwasmmediadevices_p.h +++ b/src/multimedia/wasm/qwasmmediadevices_p.h @@ -31,7 +31,6 @@ public: QList audioInputs() const override; QList audioOutputs() const override; - QList videoInputs() const override; QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo, QObject *parent) override; QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo, -- 2.30.2