15#ifndef QPULSEAUDIOSOURCE_P_H
16#define QPULSEAUDIOSOURCE_P_H
18#include <QtCore/qtclasshelpermacros.h>
20#include <QtMultimedia/qaudio.h>
21#include <QtMultimedia/qaudiodevice.h>
22#include <QtMultimedia/private/qaudio_platform_implementation_support_p.h>
23#include <QtMultimedia/private/qaudiosystem_p.h>
24#include <QtMultimedia/private/qpulsehelpers_p.h>
30class QPulseAudioSource;
37 QPulseAudioSourceStream(QAudioDevice,
const QAudioFormat &,
38 std::optional<qsizetype> ringbufferSize, QPulseAudioSource *parent,
39 float volume, std::optional<int32_t> hardwareBufferSize);
49 bool start(QIODevice *device);
50 bool start(AudioCallback &&);
60 enum class StreamType : uint8_t
66 bool startStream(StreamType);
67 void installCallbacks(StreamType);
68 void uninstallCallbacks();
70 QPulseAudioSource *m_parent;
71 PAStreamHandle m_stream;
72 std::optional<AudioCallback> m_audioCallback;
75 void underflowCallback() { }
76 void overflowCallback() { }
77 void stateCallback() { }
78 void readCallbackRingbuffer(size_t bytesToRead);
79 void readCallbackAudioCallback(size_t bytesToRead);
80 void latencyUpdateCallback() { }
85class QPulseAudioSource
final
86 :
public QPlatformAudioSourceImplementationWithCallback<QPulseAudioSourceStream,
89 using BaseClass = QPlatformAudioSourceImplementationWithCallback<QPulseAudioSourceStream,
93 QPulseAudioSource(QAudioDevice,
const QAudioFormat &, QObject *parent);
95 void start(QIODevice *device)
override;
96 void start(AudioCallback &&)
override;
100 bool validatePulseaudio();
QList< QAudioDevice > findAudioOutputs() const override
QList< QAudioDevice > findAudioInputs() const override
QLatin1String backendName() const override
QPlatformAudioSink * createAudioSink(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
QPlatformAudioSource * createAudioSource(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
~QPulseAudioDevices() override
QIODevice * start() override
void start(QIODevice *device) override
void start(AudioCallback &&) override
void updateStreamIdle(bool idle) override
bool start(AudioCallback &&)
bool start(QIODevice *device)
void stop(ShutdownPolicy)
QPulseAudioSource SourceType
~QPulseAudioSourceStream()