hydrogen 1.2.3
PulseAudioDriver Class Reference

PulseAudio driver. More...

#include <PulseAudioDriver.h>

Inheritance diagram for PulseAudioDriver:
Object< PulseAudioDriver > AudioOutput Base Object< AudioOutput > Base

Public Member Functions

 PulseAudioDriver (audioProcessCallback processCallback)
 
 ~PulseAudioDriver ()
 
virtual int connect () override
 
virtual void disconnect () override
 
virtual unsigned getBufferSize () override
 
virtual float * getOut_L () override
 
virtual float * getOut_R () override
 
virtual unsigned getSampleRate () override
 
virtual int init (unsigned nBufferSize) override
 
- Public Member Functions inherited from Object< PulseAudioDriver >
 Object ()
 
 Object (const Object< PulseAudioDriver > &other)
 
- Public Member Functions inherited from Base
 Base ()
 
 Base (const Base &other)
 
virtual const char * class_name () const
 
void Print (bool bShort=true) const
 Prints content of toQString() via DEBUGLOG.
 
virtual QString toQString (const QString &sPrefix="", bool bShort=true) const
 Formatted string version for debugging purposes.
 
- Public Member Functions inherited from AudioOutput
 AudioOutput ()=default
 
virtual ~AudioOutput ()
 
virtual int getLatency ()
 Approximate audio latency (in frames) A reasonable approximation is the buffer time on most audio systems.
 
virtual int getXRuns () const
 Get the number of XRuns that occurred since the audio driver has started.
 
- Public Member Functions inherited from Object< AudioOutput >
 Object ()
 
 Object (const Object< AudioOutput > &other)
 

Private Member Functions

int thread_body ()
 

Static Private Member Functions

static void ctx_state_callback (pa_context *ctx, void *udata)
 
static void pipe_callback (pa_mainloop_api *, pa_io_event *, int fd, pa_io_event_flags_t events, void *udata)
 
static void * s_thread_body (void *)
 
static void stream_state_callback (pa_stream *stream, void *udata)
 
static void stream_write_callback (pa_stream *stream, size_t bytes, void *udata)
 

Private Attributes

unsigned m_buffer_size
 
audioProcessCallback m_callback
 
pthread_cond_t m_cond
 
bool m_connected
 
pa_context * m_ctx
 
pa_mainloop * m_main_loop
 
pthread_mutex_t m_mutex
 
float * m_outL
 
float * m_outR
 
int m_pipe [2]
 File descriptors used to write data to (m_pipe[1]) and read data from (m_pipe[0]) the pipe.
 
int m_ready
 
unsigned m_sample_rate
 
pa_stream * m_stream
 
pthread_t m_thread
 

Additional Inherited Members

- Static Public Member Functions inherited from Base
static const char * _class_name ()
 return the class name
 
static QString base_clock (const QString &sMsg)
 Measures the current time and stores it in __last_clock.
 
static QString base_clock_in (const QString &sMsg)
 
static int bootstrap (Logger *logger, bool count=false)
 must be called before any Object instantiation !
 
static bool count_active ()
 
static int getAliveObjectCount ()
 
static object_map_t getObjectMap ()
 
static Loggerlogger ()
 return the logger instance
 
static int objects_count ()
 
static void printObjectMapDiff (object_map_t map)
 Creates the difference between a snapshot of the object map and its current state and prints it to std::cout.
 
static void set_count (bool flag)
 enable/disable class instances counting
 
static void write_objects_map_to (std::ostream &out, object_map_t *map=nullptr)
 output the full objects map to a given ostream
 
static void write_objects_map_to_cerr ()
 output objects map to stderr
 
- Static Public Member Functions inherited from AudioOutput
static QStringList getDevices ()
 
- Static Public Attributes inherited from Base
static QString sPrintIndention = " "
 String used to format the debugging string output of some core classes.
 
- Protected Member Functions inherited from Object< PulseAudioDriver >
 ~Object ()
 
- Protected Member Functions inherited from Base
 ~Base ()
 
- Protected Member Functions inherited from Object< AudioOutput >
 ~Object ()
 
- Static Protected Member Functions inherited from Base
static void registerClass (const char *name, const atomic_obj_cpt_t *counters)
 
- Static Protected Attributes inherited from Base
static bool __count = false
 should we count class instances
 
static timeval __last_clock = { 0, 0 }
 
static Logger__logger = nullptr
 

Detailed Description

PulseAudio driver.

Definition at line 42 of file PulseAudioDriver.h.

Constructor & Destructor Documentation

◆ PulseAudioDriver()

Definition at line 34 of file PulseAudioDriver.cpp.

◆ ~PulseAudioDriver()

Definition at line 49 of file PulseAudioDriver.cpp.

Member Function Documentation

◆ connect()

int connect ( )
overridevirtual

Implements AudioOutput.

Definition at line 70 of file PulseAudioDriver.cpp.

◆ ctx_state_callback()

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

Definition at line 196 of file PulseAudioDriver.cpp.

◆ disconnect()

void disconnect ( )
overridevirtual

Implements AudioOutput.

Definition at line 113 of file PulseAudioDriver.cpp.

◆ getBufferSize()

unsigned getBufferSize ( )
overridevirtual

Implements AudioOutput.

Definition at line 128 of file PulseAudioDriver.cpp.

◆ getOut_L()

float * getOut_L ( )
overridevirtual

Implements AudioOutput.

Definition at line 140 of file PulseAudioDriver.cpp.

◆ getOut_R()

float * getOut_R ( )
overridevirtual

Implements AudioOutput.

Definition at line 146 of file PulseAudioDriver.cpp.

◆ getSampleRate()

unsigned getSampleRate ( )
overridevirtual

Implements AudioOutput.

Definition at line 134 of file PulseAudioDriver.cpp.

◆ init()

int init ( unsigned nBufferSize)
overridevirtual

Implements AudioOutput.

Definition at line 58 of file PulseAudioDriver.cpp.

◆ pipe_callback()

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

Definition at line 269 of file PulseAudioDriver.cpp.

◆ s_thread_body()

void * s_thread_body ( void * arg)
staticprivate

Definition at line 151 of file PulseAudioDriver.cpp.

◆ stream_state_callback()

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

Definition at line 223 of file PulseAudioDriver.cpp.

◆ stream_write_callback()

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

Definition at line 240 of file PulseAudioDriver.cpp.

◆ thread_body()

int thread_body ( )
private

Definition at line 167 of file PulseAudioDriver.cpp.

Field Documentation

◆ m_buffer_size

unsigned m_buffer_size
private

Definition at line 71 of file PulseAudioDriver.h.

◆ m_callback

audioProcessCallback m_callback
private

Definition at line 64 of file PulseAudioDriver.h.

◆ m_cond

pthread_cond_t m_cond
private

Definition at line 60 of file PulseAudioDriver.h.

◆ m_connected

bool m_connected
private

Definition at line 68 of file PulseAudioDriver.h.

◆ m_ctx

pa_context* m_ctx
private

Definition at line 66 of file PulseAudioDriver.h.

◆ m_main_loop

pa_mainloop* m_main_loop
private

Definition at line 65 of file PulseAudioDriver.h.

◆ m_mutex

pthread_mutex_t m_mutex
private

Definition at line 59 of file PulseAudioDriver.h.

◆ m_outL

float* m_outL
private

Definition at line 72 of file PulseAudioDriver.h.

◆ m_outR

float* m_outR
private

Definition at line 73 of file PulseAudioDriver.h.

◆ m_pipe

int m_pipe[2]
private

File descriptors used to write data to (m_pipe[1]) and read data from (m_pipe[0]) the pipe.

Definition at line 63 of file PulseAudioDriver.h.

◆ m_ready

int m_ready
private

Definition at line 69 of file PulseAudioDriver.h.

◆ m_sample_rate

unsigned m_sample_rate
private

Definition at line 70 of file PulseAudioDriver.h.

◆ m_stream

pa_stream* m_stream
private

Definition at line 67 of file PulseAudioDriver.h.

◆ m_thread

pthread_t m_thread
private

Definition at line 58 of file PulseAudioDriver.h.