23 explicit QAudioSink(
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
24 explicit QAudioSink(
const QAudioDevice &audioDeviceInfo,
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
25 ~QAudioSink() override;
27 bool isNull()
const {
return !d; }
29 QAudioFormat format()
const;
31 void start(QIODevice *device);
34 template <
typename Callback, QtAudio::if_audio_sink_callback<Callback> =
true>
35 void start(Callback &&cb)
37 Q_ASSERT(QtAudioPrivate::isNonnullFunction(cb));
39 if constexpr (!std::is_copy_constructible_v<Callback>) {
41 using CallbackType =
typename QtAudioPrivate::GetSampleType<Callback>::type;
42 auto callback = std::make_shared<std::decay_t<Callback>>(std::forward<Callback>(cb));
43 start([callback = std::move(callback)](QSpan<CallbackType> arg) {
47 startABIImpl(QtAudioPrivate::AudioSinkCallback(std::forward<Callback>(cb)));
56 void setBufferSize(qsizetype bytes);
57 qsizetype bufferSize()
const;
59 void setBufferFrameCount(qsizetype framesCount);
60 qsizetype bufferFrameCount()
const;
62 qsizetype bytesFree()
const;
63 qsizetype framesFree()
const;
65 qint64 processedUSecs()
const;
66 qint64 elapsedUSecs()
const;
68 QtAudio::Error error()
const;
69 QtAudio::State state()
const;
71 void setVolume(qreal);
76 void stateChanged(QtAudio::State state);
79 void stateChanged(QAudio::State state);
84 void startImpl(T &&callback);
86 void startABIImpl(QtAudioPrivate::AudioSinkCallback &&);
88 Q_DISABLE_COPY(QAudioSink)
90 friend class QPlatformAudioSink;
91 QPlatformAudioSink *d;