34class QAlsaAudioSink :
public QPlatformAudioSink
36 friend class AlsaOutputPrivate;
39 QAlsaAudioSink(QAudioDevice device,
const QAudioFormat &, QObject *parent);
42 qint64 write(
const char *data, qint64 len );
44 void start(QIODevice* device) override;
45 QIODevice* start() override;
47 void reset() override;
48 void suspend() override;
49 void resume() override;
50 qsizetype bytesFree()
const override;
51 void setBufferSize(qsizetype value) override;
52 qsizetype bufferSize()
const override;
53 qint64 processedUSecs()
const override;
54 QAudio::State state()
const override;
56 QIODevice* audioSource =
nullptr;
57 QAudio::Error errorState = QAudio::NoError;
58 QAudio::State deviceState = QAudio::StoppedState;
59 QAudio::State suspendedInState = QAudio::SuspendedState;
71 bool resuming =
false;
74 qint64 totalTimeValue = 0;
75 unsigned int buffer_time = 100000;
76 unsigned int period_time = 20000;
77 snd_pcm_uframes_t buffer_frames;
78 snd_pcm_uframes_t period_frames;
79 int xrun_recovery(
int err);
85 QTimer* timer =
nullptr;
86 int bytesAvailable = 0;
87 qint64 elapsedTimeOffset = 0;
88 char* audioBuffer =
nullptr;
89 snd_pcm_t* handle =
nullptr;
90 snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
91 snd_pcm_hw_params_t *hwparams =
nullptr;