31class QCoreAudioSinkStream
final :
public std::enable_shared_from_this<QCoreAudioSinkStream>,
32 QtMultimediaPrivate::QPlatformAudioSinkStream
34 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
35 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
40 explicit QCoreAudioSinkStream(QAudioDevice,
const QAudioFormat &,
41 std::optional<qsizetype> ringbufferSize, QDarwinAudioSink *parent,
42 float volume, std::optional<int32_t> hardwareBufferFrames,
44 Q_DISABLE_COPY_MOVE(QCoreAudioSinkStream)
47 bool start(QIODevice *device);
49 bool start(AudioCallback cb);
50 void stop(ShutdownPolicy policy);
57 using QPlatformAudioSinkStream::bytesFree;
58 using QPlatformAudioSinkStream::processedDuration;
59 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
60 using QPlatformAudioSinkStream::setVolume;
65 OSStatus processRingbuffer(uint32_t numberOfFrames,
66 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
67 OSStatus processAudioCallback(uint32_t numberOfFrames,
68 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
74 bool addDisconnectListener(AudioObjectID id);
75 void removeDisconnectListener();
77 QCoreAudioUtils::DeviceDisconnectMonitor m_disconnectMonitor;
78 QFuture<
void> m_stopOnDisconnected;
81 std::unique_ptr<QIODevice> m_reader;
82 QCoreAudioUtils::AudioUnitHandle m_audioUnit;
83 bool m_audioUnitRunning{};
85 QDarwinAudioSink *m_parent;
87 std::optional<AudioCallback> m_audioCallback;
90class QDarwinAudioSink
final
91 :
public QtMultimediaPrivate::QPlatformAudioSinkImplementation<QCoreAudioSinkStream,
94 using BaseClass = QtMultimediaPrivate::QPlatformAudioSinkImplementation<QCoreAudioSinkStream,
98 QDarwinAudioSink(QAudioDevice device,
const QAudioFormat &format, QObject *parent);