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)
46 ~QCoreAudioSinkStream();
49 bool start(QIODevice *device);
51 bool start(AudioCallback cb);
52 void stop(ShutdownPolicy policy);
59 using QPlatformAudioSinkStream::bytesFree;
60 using QPlatformAudioSinkStream::processedDuration;
61 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
62 using QPlatformAudioSinkStream::setVolume;
67 OSStatus processRingbuffer(uint32_t numberOfFrames,
68 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
69 OSStatus processAudioCallback(uint32_t numberOfFrames,
70 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
76 bool addDisconnectListener(AudioObjectID id);
77 void removeDisconnectListener();
79 QCoreAudioUtils::DeviceDisconnectMonitor m_disconnectMonitor;
80 QFuture<
void> m_stopOnDisconnected;
83 std::unique_ptr<QIODevice> m_reader;
84 QCoreAudioUtils::AudioUnitHandle m_audioUnit;
85 bool m_audioUnitRunning{};
87 QDarwinAudioSink *m_parent;
89 std::optional<AudioCallback> m_audioCallback;
QCoreAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QDarwinAudioSink *parent, float volume, std::optional< int32_t > hardwareBufferFrames, AudioEndpointRole)