70 auto skipPipewire = [] {
75 const bool considerPipewire = requestedBackend.isNull() || pipewireRequested;
77 if (considerPipewire && QtPipeWire::QAudioDevices::isSupported()) {
79 return std::make_unique<QtPipeWire::QAudioDevices>();
82 if (pipewireRequested)
83 qDebug() <<
"PipeWire audio backend requested. not available. Using default backend";
86#if QT_CONFIG(pulseaudio)
87 return std::make_unique<QPulseAudioDevices>();
90 return std::make_unique<QAlsaAudioDevices>();
92#if defined(Q_OS_QNX) && defined(QT_MM_QNX_QSA)
93 return std::make_unique<QQnxAudioDevices>();
96 return std::make_unique<QWasmAudioDevices>();
98 return std::make_unique<QPlatformAudioDevices>();
101QPlatformAudioDevices::QPlatformAudioDevices()
103 qRegisterMetaType<PrivateTag>();
106QPlatformAudioDevices::~QPlatformAudioDevices() =
default;
108QList<QAudioDevice> QPlatformAudioDevices::audioInputs()
const
110 return m_audioInputs.ensure([
this]() {
111 return findAudioInputs();
115QList<QAudioDevice> QPlatformAudioDevices::audioOutputs()
const
117 return m_audioOutputs.ensure([
this]() {
118 return findAudioOutputs();
122void QPlatformAudioDevices::onAudioInputsChanged()
124 m_audioInputs.reset();
125 emit audioInputsChanged(PrivateTag{});
128void QPlatformAudioDevices::onAudioOutputsChanged()
130 m_audioOutputs.reset();
131 emit audioOutputsChanged(PrivateTag{});
134void QPlatformAudioDevices::updateAudioInputsCache()
136 if (m_audioInputs.update(findAudioInputs()))
137 emit audioInputsChanged(PrivateTag{});
140void QPlatformAudioDevices::updateAudioOutputsCache()
142 if (m_audioOutputs.update(findAudioOutputs()))
143 emit audioOutputsChanged(PrivateTag{});
157QPlatformAudioSource *QPlatformAudioDevices::audioInputDevice(QAudioFormat format,
158 const QAudioDevice &deviceInfo,
161 QAudioDevice device = deviceInfo;
163 device = QMediaDevices::defaultAudioInput();
168 if (format == QAudioFormat{})
169 format = device.preferredFormat();
171 return createAudioSource(device, format, parent);
174QPlatformAudioSink *QPlatformAudioDevices::audioOutputDevice(QAudioFormat format,
175 const QAudioDevice &deviceInfo,
178 QAudioDevice device = deviceInfo;
180 device = QMediaDevices::defaultAudioOutput();
185 if (format == QAudioFormat{})
186 format = device.preferredFormat();
188 return createAudioSink(device, format, parent);