From efb90dbca188244d4f696e58321f2a4d7ac155c2 Mon Sep 17 00:00:00 2001 From: Piotr Srebrny Date: Thu, 15 Dec 2022 17:16:18 +0100 Subject: 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) --- src/multimedia/alsa/qalsamediadevices.cpp | 5 ----- src/multimedia/alsa/qalsamediadevices_p.h | 1 - src/multimedia/platform/qplatformmediadevices.cpp | 19 ++++++++++++++++++- src/multimedia/platform/qplatformmediadevices_p.h | 12 +++++------- src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp | 5 ----- src/multimedia/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 9f3b3d963..cc37e0601 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 612ea2119..d9fbb7c97 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 867edb7c7..6944e8ca1 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 5786c28a4..3cde651fa 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 d744e0417..8a28c3966 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 36435b220..094dc3907 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 5244236be..abdc5c11b 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 b19bec3a2..df79c564b 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, -- cgit v1.2.1