24 explicit QAudioSource(
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
25 explicit QAudioSource(
const QAudioDevice &audioDeviceInfo,
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
26 ~QAudioSource() override;
28 bool isNull()
const {
return !d; }
30 QAudioFormat format()
const;
32 void start(QIODevice *device);
35 template <
typename Callback, QtAudio::if_audio_source_callback<Callback> =
true>
36 void start(Callback &&cb)
38 Q_ASSERT(QtAudioPrivate::isNonnullFunction(cb));
40 if constexpr (!std::is_copy_constructible_v<Callback>) {
42 using CallbackType =
typename QtAudioPrivate::GetSampleType<Callback>::type;
43 auto callback = std::make_shared<std::decay_t<Callback>>(std::forward<Callback>(cb));
44 start([callback = std::move(callback)](QSpan<
const CallbackType> arg) {
48 startABIImpl(QtAudioPrivate::AudioSourceCallback(std::forward<Callback>(cb)));
57 void setBufferSize(qsizetype bytes);
58 qsizetype bufferSize()
const;
60 void setBufferFrameCount(qsizetype frames);
61 qsizetype bufferFrameCount()
const;
63 qsizetype bytesAvailable()
const;
64 qsizetype framesAvailable()
const;
66 void setVolume(qreal volume);
69 qint64 processedUSecs()
const;
70 qint64 elapsedUSecs()
const;
72 QtAudio::Error error()
const;
73 QtAudio::State state()
const;
77 void stateChanged(QtAudio::State state);
80 void stateChanged(QAudio::State state);
87 void startABIImpl(QtAudioPrivate::AudioSourceCallback &&);
89 Q_DISABLE_COPY(QAudioSource)
90 friend class QPlatformAudioSource;
92 QPlatformAudioSource *d;