4#ifndef QAUDIOOUTPUTPULSE_H
5#define QAUDIOOUTPUTPULSE_H
18#include <QtCore/qfile.h>
19#include <QtCore/qtimer.h>
20#include <QtCore/qstring.h>
21#include <QtCore/qstringlist.h>
22#include <QtCore/qelapsedtimer.h>
23#include <QtCore/qiodevice.h>
29#include <private/qaudiosystem_p.h>
30#include <private/qaudiostatemachine_p.h>
31#include <pulse/pulseaudio.h>
47 void reset()
override;
78 void onPulseContextFailed();
85 pa_sample_spec m_spec = {};
87 mutable timeval lastTimingInfo = {};
89 mutable QList<qint64> latencyList;
97 pa_stream *m_stream =
nullptr;
98 std::vector<char> m_audioBuffer;
100 qint64 m_totalTimeValue = 0;
101 qint64 m_elapsedTimeOffset = 0;
102 mutable qint64 averageLatency = 0;
103 mutable qint64 lastProcessedUSecs = 0;
104 qreal m_volume = 1.0;
106 std::atomic<pa_operation *> m_drainOperation =
nullptr;
108 std::optional<qsizetype> m_userBufferSize = std::nullopt;
109 int m_pullingPeriodSize = 0;
110 int m_pullingPeriodTime = 0;
111 bool m_pullMode =
true;
112 bool m_opened =
false;
IOBluetoothDevice * device
PulseOutputPrivate(QPulseAudioSink *audio)
qint64 writeData(const char *data, qint64 len) override
Writes up to maxSize bytes from data to the device.
virtual ~PulseOutputPrivate()
\inmodule QtCore \reentrant
QObject * parent() const
Returns a pointer to the parent object.
void streamDrainedCallback()
void streamUnderflowCallback()
QAudio::Error error() const override
qreal volume() const override
QIODevice * start() override
QPulseAudioSink(const QByteArray &device, QObject *parent)
void setVolume(qreal volume) override
qint64 processedUSecs() const override
void setBufferSize(qsizetype value) override
QAudio::State state() const override
void setFormat(const QAudioFormat &format) override
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
QAudioFormat format() const override
qsizetype bytesFree() const override
qsizetype bufferSize() const override
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei GLsizei GLenum format
std::unique_ptr< pa_operation, PAOperationDeleter > PAOperationUPtr