32class QCoreAudioSinkStream
final :
public std::enable_shared_from_this<QCoreAudioSinkStream>,
33 public QtMultimediaPrivate::QPlatformAudioSinkStream
35 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
36 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
42 std::optional<qsizetype> ringbufferSize, QDarwinAudioSink *parent,
43 float volume, std::optional<int32_t> hardwareBufferFrames,
45 Q_DISABLE_COPY_MOVE(QCoreAudioSinkStream)
48 bool start(QIODevice *device);
50 bool start(AudioCallback cb);
51 void stop(ShutdownPolicy policy);
58 using QPlatformAudioSinkStream::bytesFree;
59 using QPlatformAudioSinkStream::processedDuration;
60 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
61 using QPlatformAudioSinkStream::setVolume;
66 OSStatus processRingbuffer(uint32_t numberOfFrames,
67 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
68 OSStatus processAudioCallback(uint32_t numberOfFrames,
69 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
75 bool addDisconnectListener(AudioObjectID id);
76 void removeDisconnectListener();
78 QCoreAudioUtils::DeviceDisconnectMonitor m_disconnectMonitor;
79 QFuture<
void> m_stopOnDisconnected;
82 std::unique_ptr<QIODevice> m_reader;
83 QCoreAudioUtils::AudioUnitHandle m_audioUnit;
84 bool m_audioUnitRunning{};
86 QDarwinAudioSink *m_parent;
88 std::optional<AudioCallback> m_audioCallback;
QCoreAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QDarwinAudioSink *parent, float volume, std::optional< int32_t > hardwareBufferFrames, AudioEndpointRole)