18 #ifndef PLAY_BACK_PULSE_AUDIO_H 19 #define PLAY_BACK_PULSE_AUDIO_H 22 #ifdef HAVE_PULSEAUDIO_SUPPORT 26 #include <pulse/context.h> 27 #include <pulse/error.h> 28 #include <pulse/gccmacro.h> 29 #include <pulse/introspect.h> 30 #include <pulse/mainloop.h> 31 #include <pulse/proplist.h> 32 #include <pulse/stream.h> 38 #include <QWaitCondition> 66 virtual QString
open(
const QString &device,
double rate,
67 unsigned int channels,
unsigned int bits,
68 unsigned int bufbase) Q_DECL_OVERRIDE;
80 virtual int close() Q_DECL_OVERRIDE;
95 virtual QList<unsigned int>
supportedBits(
const QString &device)
109 unsigned int &min,
unsigned int &max)
116 int mainloopPoll(
struct pollfd *ufds,
unsigned long int nfds,
125 virtual void run_wrapper(
const QVariant ¶ms) Q_DECL_OVERRIDE;
149 int eol,
void *userdata);
167 static void pa_write_cb(pa_stream *p,
size_t nbytes,
void *userdata);
194 void notifySinkInfo(pa_context *c,
const pa_sink_info *info,
int eol);
209 void notifyWrite(pa_stream *stream,
size_t nbytes);
static void pa_context_notify_cb(pa_context *c, void *data)
virtual int close() Q_DECL_OVERRIDE
virtual QStringList supportedDevices() Q_DECL_OVERRIDE
Kwave::WorkerThread m_mainloop_thread
unsigned int m_bytes_per_sample
QWaitCondition m_mainloop_signal
void notifyStreamState(pa_stream *stream)
void disconnectFromServer()
virtual ~PlayBackPulseAudio() Q_DECL_OVERRIDE
void notifyContext(pa_context *c)
PlayBackPulseAudio(const Kwave::FileInfo &info)
static void pa_sink_info_cb(pa_context *c, const pa_sink_info *info, int eol, void *userdata)
pa_sample_spec m_sample_spec
virtual QString open(const QString &device, double rate, unsigned int channels, unsigned int bits, unsigned int bufbase) Q_DECL_OVERRIDE
virtual QString fileFilter() Q_DECL_OVERRIDE
pa_proplist * m_pa_proplist
static void pa_stream_state_cb(pa_stream *p, void *userdata)
virtual int write(const Kwave::SampleArray &samples) Q_DECL_OVERRIDE
static void pa_write_cb(pa_stream *p, size_t nbytes, void *userdata)
virtual QList< unsigned int > supportedBits(const QString &device) Q_DECL_OVERRIDE
pa_mainloop * m_pa_mainloop
QMap< QString, sink_info_t > m_device_list
void notifySuccess(pa_stream *stream, int success)
virtual void run_wrapper(const QVariant ¶ms) Q_DECL_OVERRIDE
pa_context * m_pa_context
void notifyWrite(pa_stream *stream, size_t nbytes)
static void pa_stream_success_cb(pa_stream *s, int success, void *userdata)
int mainloopPoll(struct pollfd *ufds, unsigned long int nfds, int timeout)
virtual int detectChannels(const QString &device, unsigned int &min, unsigned int &max) Q_DECL_OVERRIDE
void notifySinkInfo(pa_context *c, const pa_sink_info *info, int eol)