[PATCH] Provide default implementation for QPlatformMediaDevices
authorPiotr Srebrny <piotr.srebrny@qt.io>
Thu, 15 Dec 2022 16:16:18 +0000 (17:16 +0100)
committerPatrick Franz <deltaone@debian.org>
Sat, 6 May 2023 15:40:13 +0000 (17:40 +0200)
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 <artem.dyomin@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit ab49644bea444d105e6fa6ca246f21eccd7a67e0)

Gbp-Pq: Name provide_default_implementation_for_qplatformmediadevices.patch

src/multimedia/alsa/qalsamediadevices.cpp
src/multimedia/alsa/qalsamediadevices_p.h
src/multimedia/platform/qplatformmediadevices.cpp
src/multimedia/platform/qplatformmediadevices_p.h
src/multimedia/pulseaudio/qpulseaudiomediadevices.cpp
src/multimedia/pulseaudio/qpulseaudiomediadevices_p.h
src/multimedia/wasm/qwasmmediadevices.cpp
src/multimedia/wasm/qwasmmediadevices_p.h

index 9f3b3d9632278f3413909f12ee31550416735029..cc37e06019c35d06cd74b263d8b4ccb4bc50ee9b 100644 (file)
@@ -74,11 +74,6 @@ QList<QAudioDevice> QAlsaMediaDevices::audioOutputs() const
     return availableDevices(QAudioDevice::Output);
 }
 
-QList<QCameraDevice> QAlsaMediaDevices::videoInputs() const
-{
-    return {};
-}
-
 QPlatformAudioSource *QAlsaMediaDevices::createAudioSource(const QAudioDevice &deviceInfo,
                                                            QObject *parent)
 {
index 612ea21191a4cdc96c27ec9a59cbb8644bf60ff2..d9fbb7c9772b1123a370ccc9cdcbe59958b5554b 100644 (file)
@@ -30,7 +30,6 @@ public:
 
     QList<QAudioDevice> audioInputs() const override;
     QList<QAudioDevice> audioOutputs() const override;
-    QList<QCameraDevice> videoInputs() const override;
     QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo,
                                             QObject *parent) override;
     QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo,
index 867edb7c768932cf0e8e61fa4225696063f69641..6944e8ca15a8b8cd47f6b224047da249ee7129a0 100644 (file)
@@ -6,6 +6,7 @@
 #include "qaudiodevice.h"
 #include "qcameradevice.h"
 #include "qaudiosystem_p.h"
+#include "qaudiodevice.h"
 
 #include <qmutex.h>
 #include <qloggingcategory.h>
@@ -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<QCameraDevice> QPlatformMediaDevices::videoInputs() const
+QList<QAudioDevice> QPlatformMediaDevices::audioInputs() const
+{
+    return {};
+}
+
+QList<QAudioDevice> 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)
index 5786c28a451864c28dfec27fc8ad585d436678cf..3cde651fa01e85e4d09dddc5a2e8b885413ebe6c 100644 (file)
@@ -38,13 +38,11 @@ public:
     static void setDevices(QPlatformMediaDevices *);
     static QPlatformMediaDevices *instance();
 
-    virtual QList<QAudioDevice> audioInputs() const = 0;
-    virtual QList<QAudioDevice> audioOutputs() const = 0;
-    virtual QList<QCameraDevice> videoInputs() const;
-    virtual QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo,
-                                                    QObject *parent) = 0;
-    virtual QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo,
-                                                QObject *parent) = 0;
+    virtual QList<QAudioDevice> audioInputs() const;
+    virtual QList<QAudioDevice> 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);
index d744e041751f49583ab9ea2456a05a418e5c111b..8a28c39660e1a195819f79ecf6dc1e69b3357964 100644 (file)
@@ -33,11 +33,6 @@ QList<QAudioDevice> QPulseAudioMediaDevices::audioOutputs() const
     return pulseEngine->availableDevices(QAudioDevice::Output);
 }
 
-QList<QCameraDevice> QPulseAudioMediaDevices::videoInputs() const
-{
-    return {};
-}
-
 QPlatformAudioSource *QPulseAudioMediaDevices::createAudioSource(const QAudioDevice &deviceInfo,
                                                                  QObject *parent)
 {
index 36435b220ff17d9f0146341c9574d2af123688e9..094dc390782fa9c6275a65d4f4c559b5be752ca3 100644 (file)
@@ -31,7 +31,6 @@ public:
 
     QList<QAudioDevice> audioInputs() const override;
     QList<QAudioDevice> audioOutputs() const override;
-    QList<QCameraDevice> videoInputs() const override;
     QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo,
                                             QObject *parent) override;
     QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo,
index 5244236be7e3fc4f0a1269bf9da8747f4569bcd7..abdc5c11b7ada7b98b69ba43c21bd7e3a6b05a7a 100644 (file)
@@ -38,11 +38,6 @@ QList<QAudioDevice> QWasmMediaDevices::audioOutputs() const
     return m_outs;
 }
 
-QList<QCameraDevice> QWasmMediaDevices::videoInputs() const
-{
-    return {};
-}
-
 QPlatformAudioSource *QWasmMediaDevices::createAudioSource(const QAudioDevice &deviceInfo,
                                                            QObject *parent)
 {
index b19bec3a252000477193af8a3d4b26dba0de566e..df79c564ba47e2bfdab1fc6bc5fa34664bc0c3c6 100644 (file)
@@ -31,7 +31,6 @@ public:
 
     QList<QAudioDevice> audioInputs() const override;
     QList<QAudioDevice> audioOutputs() const override;
-    QList<QCameraDevice> videoInputs() const override;
     QPlatformAudioSource *createAudioSource(const QAudioDevice &deviceInfo,
                                             QObject *parent) override;
     QPlatformAudioSink *createAudioSink(const QAudioDevice &deviceInfo,