29class QCoreAudioDevices :
public QPlatformAudioDevices
33 ~QCoreAudioDevices() override;
35 QPlatformAudioSource *createAudioSource(
const QAudioDevice &,
const QAudioFormat &,
36 QObject *parent) override;
37 QPlatformAudioSink *createAudioSink(
const QAudioDevice &,
const QAudioFormat &,
38 QObject *parent) override;
40 using QPlatformAudioDevices::updateAudioInputsCache;
41 using QPlatformAudioDevices::updateAudioOutputsCache;
43 QLatin1String backendName()
const override {
return QLatin1String{
"CoreAudio" }; }
44 bool hasCallbackApi()
const override {
return true; }
47 QList<QAudioDevice> findAudioInputs()
const override;
48 QList<QAudioDevice> findAudioOutputs()
const override;
50 struct DispatchQueueDeleter
52 void operator()(dispatch_queue_t queue)
const
55 dispatch_release(queue);
58 using UniqueDispatchQueue =
59 std::unique_ptr<std::remove_pointer_t<dispatch_queue_t>, DispatchQueueDeleter>;
61 std::unique_ptr<AudioObjectPropertyListenerBlock> m_deviceListenerBlock;
62 UniqueDispatchQueue m_listenerQueue;
63 std::shared_ptr<
bool> m_destroyed = std::make_shared<
bool>(
false);