25 explicit QAudioSink(
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
26 explicit QAudioSink(
const QAudioDevice &audioDeviceInfo,
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
27 ~QAudioSink() override;
29 bool isNull()
const {
return !d; }
31 QAudioFormat format()
const;
33 void start(QIODevice *device);
36 template <
typename Callback, QtAudio::if_audio_sink_callback<Callback> =
true>
37 void start(Callback &&cb)
39 Q_ASSERT(QtAudioPrivate::isNonnullFunction(cb));
41 if constexpr (!std::is_copy_constructible_v<Callback>) {
43 using CallbackType =
typename QtAudioPrivate::GetSampleType<Callback>::type;
44 auto callback = std::make_shared<Callback>(std::forward<Callback>(cb));
45 start([callback = std::move(callback)](QSpan<CallbackType> arg) {
49 startABIImpl(QtAudioPrivate::AudioSinkCallback(std::forward<Callback>(cb)));
58 void setBufferSize(qsizetype bytes);
59 qsizetype bufferSize()
const;
61 void setBufferFrameCount(qsizetype framesCount);
62 qsizetype bufferFrameCount()
const;
64 qsizetype bytesFree()
const;
65 qsizetype framesFree()
const;
67 qint64 processedUSecs()
const;
68 qint64 elapsedUSecs()
const;
70 QtAudio::Error error()
const;
71 QtAudio::State state()
const;
73 void setVolume(qreal);
78 void stateChanged(QtAudio::State state);
81 void stateChanged(QAudio::State state);
86 void startImpl(T &&callback);
88 void startABIImpl(QtAudioPrivate::AudioSinkCallback &&);
90 Q_DISABLE_COPY(QAudioSink)
92 friend class QPlatformAudioSink;
93 QPlatformAudioSink *d;