30class QCoreAudioDevices :
public QPlatformAudioDevices
34 ~QCoreAudioDevices() override;
36 QPlatformAudioSource *createAudioSource(
const QAudioDevice &,
const QAudioFormat &,
37 QObject *parent) override;
38 QPlatformAudioSink *createAudioSink(
const QAudioDevice &,
const QAudioFormat &,
39 QObject *parent) override;
41 using QPlatformAudioDevices::updateAudioInputsCache;
42 using QPlatformAudioDevices::updateAudioOutputsCache;
44 QLatin1String backendName()
const override {
return QLatin1String{
"CoreAudio" }; }
45 bool hasCallbackApi()
const override {
return true; }
48 QList<QAudioDevice> findAudioInputs()
const override;
49 QList<QAudioDevice> findAudioOutputs()
const override;
51 struct DispatchQueueDeleter
53 void operator()(dispatch_queue_t queue)
const
56 dispatch_release(queue);
59 using UniqueDispatchQueue =
60 std::unique_ptr<std::remove_pointer_t<dispatch_queue_t>, DispatchQueueDeleter>;
62 std::shared_ptr<AudioObjectPropertyListenerBlock> m_deviceListenerBlock;
63 UniqueDispatchQueue m_listenerQueue;
64 std::shared_ptr<
bool> m_destroyed = std::make_shared<
bool>(
false);