pianod2
multisource multiuser scriptable networked music player
Public Member Functions | Private Types | Private Attributes | Static Private Attributes | List of all members
Audio::LibsdlOutput Class Reference

Audio output class utilizing SDL for output. More...

#include <libsdloutput.h>

Inheritance diagram for Audio::LibsdlOutput:
Inheritance graph
[legend]
Collaboration diagram for Audio::LibsdlOutput:
Collaboration graph
[legend]

Public Member Functions

 LibsdlOutput (const AudioSettings &settings, const AudioFormat &format)
 Open audio output using libAO. More...
 
virtual ~LibsdlOutput () override
 
void fetch (Uint8 *buffer, int length)
 Fetch output as requested. More...
 
virtual bool play (void *buffer, unsigned numberOfBytes) override
 Play output. More...
 
- Public Member Functions inherited from Audio::Output
virtual ~Output ()
 
char bytesPerSample ()
 

Private Types

using BufferIndex = uint32_t
 

Private Attributes

std::mutex data_mutex
 
std::condition_variable notifier
 
uint8_t * audio_cirque = nullptr
 
const BufferIndex block_samples = 0x400
 
const BufferIndex block_count = 0x10
 
const BufferIndex cirque_samples = block_samples * block_count
 
const BufferIndex cirque_size
 
volatile BufferIndex cirque_write = 0
 
volatile BufferIndex cirque_read = 0
 

Static Private Attributes

static std::mutex sdl_mutex
 Mutex to restrict concurrent calls into libsdl API. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Audio::Output
static bool isValidOutput (const AudioSettings &settings)
 Check if audio settings are valid. More...
 
static bool outputCanCrossfade (const AudioSettings &settings)
 Check if audio settings are valid. More...
 
static OutputgetOutput (const AudioSettings &settings, const AudioFormat &format)
 Factory gets whatever kind of output is best, or requested by the audio settings. More...
 
static void reportLibrariesAndVersions (int verbose)
 Report audio libraries in use, and their versions. More...
 
- Protected Attributes inherited from Audio::Output
char bytes_per_sample_set
 

Detailed Description

Audio output class utilizing SDL for output.

Member Typedef Documentation

◆ BufferIndex

using Audio::LibsdlOutput::BufferIndex = uint32_t
private

Constructor & Destructor Documentation

◆ LibsdlOutput()

Audio::LibsdlOutput::LibsdlOutput ( const AudioSettings settings,
const AudioFormat format 
)

Open audio output using libAO.

Parameters
settingsDevice/ driver/ host to use for output.
formatThe format in which samples will arrive for output.
Here is the call graph for this function:

◆ ~LibsdlOutput()

Audio::LibsdlOutput::~LibsdlOutput ( )
overridevirtual

Member Function Documentation

◆ fetch()

void Audio::LibsdlOutput::fetch ( Uint8 *  buffer,
int  length 
)

Fetch output as requested.

◆ play()

bool Audio::LibsdlOutput::play ( void *  buffer,
unsigned  number_of_bytes 
)
overridevirtual

Play output.

Parameters
bufferThe samples, in packed (interleaved) format if multichannel.
number_of_bytesSize of the buffer; number of samples is determined by the audio format set when opening the channel.

Implements Audio::Output.

Member Data Documentation

◆ audio_cirque

uint8_t* Audio::LibsdlOutput::audio_cirque = nullptr
private

◆ block_count

const BufferIndex Audio::LibsdlOutput::block_count = 0x10
private

◆ block_samples

const BufferIndex Audio::LibsdlOutput::block_samples = 0x400
private

◆ cirque_read

volatile BufferIndex Audio::LibsdlOutput::cirque_read = 0
private

◆ cirque_samples

const BufferIndex Audio::LibsdlOutput::cirque_samples = block_samples * block_count
private

◆ cirque_size

const BufferIndex Audio::LibsdlOutput::cirque_size
private

◆ cirque_write

volatile BufferIndex Audio::LibsdlOutput::cirque_write = 0
private

◆ data_mutex

std::mutex Audio::LibsdlOutput::data_mutex
private

◆ notifier

std::condition_variable Audio::LibsdlOutput::notifier
private

◆ sdl_mutex

std::mutex Audio::LibsdlOutput::sdl_mutex
staticprivate

Mutex to restrict concurrent calls into libsdl API.


The documentation for this class was generated from the following files: