26 explicit QAudioSource(
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
27 explicit QAudioSource(
const QAudioDevice &audioDeviceInfo,
const QAudioFormat &format = QAudioFormat(), QObject *parent =
nullptr);
28 ~QAudioSource() override;
30 bool isNull()
const {
return !d; }
32 QAudioFormat format()
const;
34 void start(QIODevice *device);
37 template <
typename Callback, QtAudio::if_audio_source_callback<Callback> =
true>
38 void start(Callback &&cb)
40 Q_ASSERT(QtAudioPrivate::isNonnullFunction(cb));
42 if constexpr (!std::is_copy_constructible_v<Callback>) {
44 using CallbackType =
typename QtAudioPrivate::GetSampleType<Callback>::type;
45 auto callback = std::make_shared<Callback>(std::forward<Callback>(cb));
46 start([callback = std::move(callback)](QSpan<
const CallbackType> arg) {
50 startABIImpl(QtAudioPrivate::AudioSourceCallback(std::forward<Callback>(cb)));
59 void setBufferSize(qsizetype bytes);
60 qsizetype bufferSize()
const;
62 void setBufferFrameCount(qsizetype frames);
63 qsizetype bufferFrameCount()
const;
65 qsizetype bytesAvailable()
const;
66 qsizetype framesAvailable()
const;
68 void setVolume(qreal volume);
71 qint64 processedUSecs()
const;
72 qint64 elapsedUSecs()
const;
74 QtAudio::Error error()
const;
75 QtAudio::State state()
const;
79 void stateChanged(QtAudio::State state);
82 void stateChanged(QAudio::State state);
89 void startABIImpl(QtAudioPrivate::AudioSourceCallback &&);
91 Q_DISABLE_COPY(QAudioSource)
92 friend class QPlatformAudioSource;
94 QPlatformAudioSource *d;