hydrogen 1.1.1
PulseAudioDriver Class Reference

PulseAudio driver. More...

#include <PulseAudioDriver.h>

Inheritance diagram for PulseAudioDriver:
AudioOutput Object

Public Types

typedef int(* audioProcessCallback) (uint32_t, void *)
 

Public Member Functions

 PulseAudioDriver (audioProcessCallback processCallback)
 
 ~PulseAudioDriver ()
 
virtual int init (unsigned nBufferSize)
 
virtual int connect ()
 
virtual void disconnect ()
 
virtual unsigned getBufferSize ()
 
virtual unsigned getSampleRate ()
 
virtual float * getOut_L ()
 
virtual float * getOut_R ()
 
virtual void updateTransportInfo ()
 
virtual void play ()
 
virtual void stop ()
 
virtual void locate (unsigned long nFrame)
 
virtual void setBpm (float fBPM)
 
- Public Member Functions inherited from AudioOutput
 AudioOutput (const char *class_name)
 
virtual ~AudioOutput ()
 
virtual int init (unsigned nBufferSize)=0
 
virtual int connect ()=0
 
virtual void disconnect ()=0
 
virtual unsigned getBufferSize ()=0
 
virtual unsigned getSampleRate ()=0
 
virtual int getLatency ()
 Approximate audio latency (in frames) A reasonable approximation is the buffer time on most audio systems. More...
 
virtual float * getOut_L ()=0
 
virtual float * getOut_R ()=0
 
virtual void updateTransportInfo ()=0
 
virtual void play ()=0
 
virtual void stop ()=0
 
virtual void locate (unsigned long nFrame)=0
 
virtual void setBpm (float fBPM)=0
 
- Public Member Functions inherited from Object
 ~Object ()
 destructor More...
 
 Object (const Object &obj)
 copy constructor More...
 
 Object (const char *class_name)
 constructor More...
 
const char * class_name () const
 return the class name More...
 
virtual QString toQString (const QString &sPrefix, bool bShort=true) const
 Formatted string version for debugging purposes. More...
 
void Print (bool bShort=true) const
 Prints content of toQString() via DEBUGLOG. More...
 

Private Member Functions

int thread_body ()
 

Static Private Member Functions

static void * s_thread_body (void *)
 
static void ctx_state_callback (pa_context *ctx, void *udata)
 
static void stream_state_callback (pa_stream *stream, 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)
 

Private Attributes

pthread_t m_thread
 
pthread_mutex_t m_mutex
 
pthread_cond_t m_cond
 
int m_pipe [2]
 
audioProcessCallback m_callback
 
pa_mainloop * m_main_loop
 
pa_context * m_ctx
 
pa_stream * m_stream
 
bool m_connected
 
int m_ready
 
unsigned m_sample_rate
 
unsigned m_buffer_size
 
float * m_outL
 
float * m_outR
 

Additional Inherited Members

- Static Public Member Functions inherited from AudioOutput
static QStringList getDevices ()
 
- Static Public Member Functions inherited from Object
static void set_count (bool flag)
 enable/disable class instances counting More...
 
static bool count_active ()
 return true if class instances counting is enabled More...
 
static unsigned objects_count ()
 return the number of objects More...
 
static void write_objects_map_to (std::ostream &out)
 output the full objects map to a given ostream More...
 
static void write_objects_map_to_cerr ()
 output objects map to stderr More...
 
static int bootstrap (Logger *logger, bool count=false)
 must be called before any Object instantiation ! More...
 
static Loggerlogger ()
 return the logger instance More...
 
- Data Fields inherited from AudioOutput
TransportInfo m_transport
 Local instance of the TransportInfo. More...
 
- Static Public Attributes inherited from Object
static QString sPrintIndention = " "
 String used to format the debugging string output of some core classes. More...
 
- Static Protected Attributes inherited from Object
static Logger__logger = nullptr
 logger instance pointer More...
 

Detailed Description

PulseAudio driver.

Member Typedef Documentation

◆ audioProcessCallback

typedef int(* audioProcessCallback) (uint32_t, void *)

Constructor & Destructor Documentation

◆ PulseAudioDriver()

PulseAudioDriver ( audioProcessCallback  processCallback)

◆ ~PulseAudioDriver()

Member Function Documentation

◆ connect()

int connect ( )
virtual

Implements AudioOutput.

◆ ctx_state_callback()

void ctx_state_callback ( pa_context *  ctx,
void *  udata 
)
staticprivate

◆ disconnect()

void disconnect ( )
virtual

Implements AudioOutput.

◆ getBufferSize()

unsigned getBufferSize ( )
virtual

Implements AudioOutput.

◆ getOut_L()

float * getOut_L ( )
virtual

Implements AudioOutput.

◆ getOut_R()

float * getOut_R ( )
virtual

Implements AudioOutput.

◆ getSampleRate()

unsigned getSampleRate ( )
virtual

Implements AudioOutput.

◆ init()

int init ( unsigned  nBufferSize)
virtual

Implements AudioOutput.

◆ locate()

void locate ( unsigned long  nFrame)
virtual

Implements AudioOutput.

◆ pipe_callback()

void pipe_callback ( pa_mainloop_api *  ,
pa_io_event *  ,
int  fd,
pa_io_event_flags_t  events,
void *  udata 
)
staticprivate

◆ play()

void play ( )
virtual

Implements AudioOutput.

◆ s_thread_body()

void * s_thread_body ( void *  arg)
staticprivate

◆ setBpm()

void setBpm ( float  fBPM)
virtual

Implements AudioOutput.

◆ stop()

void stop ( )
virtual

Implements AudioOutput.

◆ stream_state_callback()

void stream_state_callback ( pa_stream *  stream,
void *  udata 
)
staticprivate

◆ stream_write_callback()

void stream_write_callback ( pa_stream *  stream,
size_t  bytes,
void *  udata 
)
staticprivate

◆ thread_body()

int thread_body ( )
private

◆ updateTransportInfo()

void updateTransportInfo ( )
virtual

Implements AudioOutput.

Field Documentation

◆ m_buffer_size

unsigned m_buffer_size
private

◆ m_callback

audioProcessCallback m_callback
private

◆ m_cond

pthread_cond_t m_cond
private

◆ m_connected

bool m_connected
private

◆ m_ctx

pa_context* m_ctx
private

◆ m_main_loop

pa_mainloop* m_main_loop
private

◆ m_mutex

pthread_mutex_t m_mutex
private

◆ m_outL

float* m_outL
private

◆ m_outR

float* m_outR
private

◆ m_pipe

int m_pipe[2]
private

◆ m_ready

int m_ready
private

◆ m_sample_rate

unsigned m_sample_rate
private

◆ m_stream

pa_stream* m_stream
private

◆ m_thread

pthread_t m_thread
private