1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
From efb90dbca188244d4f696e58321f2a4d7ac155c2 Mon Sep 17 00:00:00 2001
From: Piotr Srebrny <piotr.srebrny@qt.io>
Date: Thu, 15 Dec 2022 17:16:18 +0100
Subject: [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 <artem.dyomin@qt.io>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit ab49644bea444d105e6fa6ca246f21eccd7a67e0)
---
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 @@
return availableDevices(QAudioDevice::Output);
}
-QList<QCameraDevice> 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 @@
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,
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 <qmutex.h>
#include <qloggingcategory.h>
@@ -65,6 +66,8 @@
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 @@
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)
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 @@
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);
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 @@
return pulseEngine->availableDevices(QAudioDevice::Output);
}
-QList<QCameraDevice> 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 @@
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,
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 @@
return m_outs;
}
-QList<QCameraDevice> 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 @@
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,
|