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, QCoreAudioSink *parent,
43 float volume, std::optional<QtMultimediaPrivate::NativePeriodFrames> nativePeriodFrames,
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 Q_DECL_NONBLOCKING_FUNCTION;
69 OSStatus processAudioCallback(uint32_t numberOfFrames,
70 AudioBufferList *ioData)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
76 bool setDisconnectListener(AudioObjectID id);
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 QCoreAudioSink *m_parent;
88 std::optional<AudioCallback> m_audioCallback;
QCoreAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QCoreAudioSink *parent, float volume, std::optional< QtMultimediaPrivate::NativePeriodFrames > nativePeriodFrames, AudioEndpointRole)