LMMS
Loading...
Searching...
No Matches
AudioPulseAudio.h
Go to the documentation of this file.
1/*
2 * AudioPulseAudio.h - device-class which implements PulseAudio-output
3 *
4 * Copyright (c) 2008-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_AUDIO_PULSEAUDIO_H
26#define LMMS_AUDIO_PULSEAUDIO_H
27
28#include "lmmsconfig.h"
29
30#ifdef LMMS_HAVE_PULSEAUDIO
31
32#include <pulse/pulseaudio.h>
33#include <QSemaphore>
34#include <QThread>
35
36#include "AudioDevice.h"
38
39class QLineEdit;
40
41namespace lmms
42{
43
44namespace gui
45{
46class LcdSpinBox;
47}
48
49
50class AudioPulseAudio : public QThread, public AudioDevice
51{
52 Q_OBJECT
53public:
54 AudioPulseAudio( bool & _success_ful, AudioEngine* audioEngine );
55
56 inline static QString name()
57 {
58 return QT_TRANSLATE_NOOP( "AudioDeviceSetupWidget", "PulseAudio" );
59 }
60
61 static QString probeDevice();
62
63
65 {
66 public:
67 setupWidget( QWidget * _parent );
68 ~setupWidget() override;
69
70 void saveSettings() override;
71
72 private:
73 QLineEdit * m_device;
75
76 } ;
77
78
79 void streamWriteCallback( pa_stream * s, size_t length );
80
81 void signalConnected( bool connected );
82
83 pa_stream * m_s;
84 pa_sample_spec m_sampleSpec;
85 double m_latency;
86
87private:
88 void startProcessingImpl() override;
89 void stopProcessingImpl() override;
90 void run() override;
91
94
95} ;
96
97} // namespace lmms
98
99#endif // LMMS_HAVE_PULSEAUDIO
100
101#endif // LMMS_AUDIO_PULSEAUDIO_H
AudioEngine * audioEngine()
Definition AudioDevice.h:84
AudioDevice(const ch_cnt_t _channels, AudioEngine *audioEngine)
Definition AudioDevice.cpp:33
Definition AudioEngine.h:66
void saveSettings() override
Definition AudioPulseAudio.cpp:285
QLineEdit * m_device
Definition AudioPulseAudio.h:73
gui::LcdSpinBox * m_channels
Definition AudioPulseAudio.h:74
~setupWidget() override
Definition AudioPulseAudio.cpp:277
setupWidget(QWidget *_parent)
Definition AudioPulseAudio.cpp:254
double m_latency
Definition AudioPulseAudio.h:85
void signalConnected(bool connected)
Definition AudioPulseAudio.cpp:242
void stopProcessingImpl() override
Definition AudioPulseAudio.cpp:86
static QString probeDevice()
Definition AudioPulseAudio.cpp:61
QSemaphore m_connectedSemaphore
Definition AudioPulseAudio.h:93
AudioPulseAudio(bool &_success_ful, AudioEngine *audioEngine)
Definition AudioPulseAudio.cpp:45
void startProcessingImpl() override
Definition AudioPulseAudio.cpp:78
pa_sample_spec m_sampleSpec
Definition AudioPulseAudio.h:84
void run() override
Definition AudioPulseAudio.cpp:167
pa_stream * m_s
Definition AudioPulseAudio.h:83
bool m_connected
Definition AudioPulseAudio.h:92
static QString name()
Definition AudioPulseAudio.h:56
void streamWriteCallback(pa_stream *s, size_t length)
Definition AudioPulseAudio.cpp:217
Definition AudioDeviceSetupWidget.h:35
Definition LcdSpinBox.h:35
unsigned s
Definition inflate.c:1555
Definition AudioPortAudio.cpp:209
Definition AudioAlsa.cpp:35
png_uint_32 length
Definition png.c:2247