22#ifndef H2_PULSE_AUDIO_DRIVER_H
23#define H2_PULSE_AUDIO_DRIVER_H
28#if defined(H2CORE_HAVE_PULSEAUDIO) || _DOXYGEN_
32#include <pulse/pulseaudio.h>
49 virtual int init(
unsigned nBufferSize )
override;
81 static void pipe_callback(pa_mainloop_api*, pa_io_event*,
int fd,
82 pa_io_event_flags_t events,
void *udata);
93 class PulseAudioDriver :
public NullDriver
Base abstract class for audio output classes.
virtual void disconnect() override
virtual float * getOut_L() override
pa_mainloop * m_main_loop
virtual int init(unsigned nBufferSize) override
static void ctx_state_callback(pa_context *ctx, void *udata)
static void stream_write_callback(pa_stream *stream, size_t bytes, void *udata)
static void pipe_callback(pa_mainloop_api *, pa_io_event *, int fd, pa_io_event_flags_t events, void *udata)
audioProcessCallback m_callback
static void stream_state_callback(pa_stream *stream, void *udata)
static void * s_thread_body(void *)
virtual float * getOut_R() override
virtual unsigned getBufferSize() override
virtual int connect() override
PulseAudioDriver(audioProcessCallback processCallback)
int m_pipe[2]
File descriptors used to write data to (m_pipe[1]) and read data from (m_pipe[0]) the pipe.
virtual unsigned getSampleRate() override
int(* audioProcessCallback)(uint32_t, void *)