67 auto skipPipewire = [] {
72 const bool considerPipewire = requestedBackend.isNull() || pipewireRequested;
74 if (considerPipewire && QtPipeWire::QAudioDevices::isSupported()) {
76 return std::make_unique<QtPipeWire::QAudioDevices>();
79 if (pipewireRequested)
80 qDebug() <<
"PipeWire audio backend requested. not available. Using default backend";
83#if QT_CONFIG(pulseaudio)
84 return std::make_unique<QPulseAudioDevices>();
87 return std::make_unique<QAlsaAudioDevices>();
90 return std::make_unique<QQnxAudioDevices>();
93 return std::make_unique<QWasmAudioDevices>();
95 return std::make_unique<QPlatformAudioDevices>();
98QPlatformAudioDevices::QPlatformAudioDevices()
100 qRegisterMetaType<PrivateTag>();
103QPlatformAudioDevices::~QPlatformAudioDevices() =
default;
105QList<QAudioDevice> QPlatformAudioDevices::audioInputs()
const
107 return m_audioInputs.ensure([
this]() {
108 return findAudioInputs();
112QList<QAudioDevice> QPlatformAudioDevices::audioOutputs()
const
114 return m_audioOutputs.ensure([
this]() {
115 return findAudioOutputs();
119void QPlatformAudioDevices::onAudioInputsChanged()
121 m_audioInputs.reset();
122 emit audioInputsChanged(PrivateTag{});
125void QPlatformAudioDevices::onAudioOutputsChanged()
127 m_audioOutputs.reset();
128 emit audioOutputsChanged(PrivateTag{});
131void QPlatformAudioDevices::updateAudioInputsCache()
133 if (m_audioInputs.update(findAudioInputs()))
134 emit audioInputsChanged(PrivateTag{});
137void QPlatformAudioDevices::updateAudioOutputsCache()
139 if (m_audioOutputs.update(findAudioOutputs()))
140 emit audioOutputsChanged(PrivateTag{});
154QPlatformAudioSource *QPlatformAudioDevices::audioInputDevice(QAudioFormat format,
155 const QAudioDevice &deviceInfo,
158 QAudioDevice device = deviceInfo;
160 device = QMediaDevices::defaultAudioInput();
165 if (format == QAudioFormat{})
166 format = device.preferredFormat();
168 return createAudioSource(device, format, parent);
171QPlatformAudioSink *QPlatformAudioDevices::audioOutputDevice(QAudioFormat format,
172 const QAudioDevice &deviceInfo,
175 QAudioDevice device = deviceInfo;
177 device = QMediaDevices::defaultAudioOutput();
182 if (format == QAudioFormat{})
183 format = device.preferredFormat();
185 return createAudioSink(device, format, parent);