Fraise  2.1
FRAmework for Interfacing Software and Electronics
pico_audio

Common API for audio output. More...

Common API for audio output.

Functions

audio_buffer_pool_taudio_new_producer_pool (audio_buffer_format_t *format, int buffer_count, int buffer_sample_count)
 Allocate and initialise an audio producer pool. More...
 
audio_buffer_pool_taudio_new_consumer_pool (audio_buffer_format_t *format, int buffer_count, int buffer_sample_count)
 Allocate and initialise an audio consumer pool. More...
 
audio_buffer_taudio_new_wrapping_buffer (audio_buffer_format_t *format, mem_buffer_t *buffer)
 Allocate and initialise an audio wrapping buffer. More...
 
audio_buffer_taudio_new_buffer (audio_buffer_format_t *format, int buffer_sample_count)
 Allocate and initialise an new audio buffer. More...
 
void audio_init_buffer (audio_buffer_t *audio_buffer, audio_buffer_format_t *format, int buffer_sample_count)
 Initialise an audio buffer. More...
 
void give_audio_buffer (audio_buffer_pool_t *ac, audio_buffer_t *buffer)
 
audio_buffer_ttake_audio_buffer (audio_buffer_pool_t *ac, bool block)
 
void audio_upsample (int16_t *input, int16_t *output, uint output_count, uint32_t step)
 
void audio_upsample_words (int16_t *input, int16_t *output_aligned, uint output_word_count, uint32_t step)
 
void audio_upsample_double (int16_t *input, int16_t *output, uint output_count, uint32_t step)
 
void audio_complete_connection (audio_connection_t *connection, audio_buffer_pool_t *producer, audio_buffer_pool_t *consumer)
 
audio_buffer_tget_free_audio_buffer (audio_buffer_pool_t *context, bool block)
 
void queue_free_audio_buffer (audio_buffer_pool_t *context, audio_buffer_t *ab)
 
audio_buffer_tget_full_audio_buffer (audio_buffer_pool_t *context, bool block)
 
void queue_full_audio_buffer (audio_buffer_pool_t *context, audio_buffer_t *ab)
 
void consumer_pool_give_buffer_default (audio_connection_t *connection, audio_buffer_t *buffer)
 
audio_buffer_tconsumer_pool_take_buffer_default (audio_connection_t *connection, bool block)
 
void producer_pool_give_buffer_default (audio_connection_t *connection, audio_buffer_t *buffer)
 
audio_buffer_tproducer_pool_take_buffer_default (audio_connection_t *connection, bool block)
 
audio_buffer_tmono_to_mono_consumer_take (audio_connection_t *connection, bool block)
 
audio_buffer_tmono_s8_to_mono_consumer_take (audio_connection_t *connection, bool block)
 
audio_buffer_tstereo_to_stereo_consumer_take (audio_connection_t *connection, bool block)
 
audio_buffer_tmono_to_stereo_consumer_take (audio_connection_t *connection, bool block)
 
audio_buffer_tmono_s8_to_stereo_consumer_take (audio_connection_t *connection, bool block)
 
void stereo_to_stereo_producer_give (audio_connection_t *connection, audio_buffer_t *buffer)
 

Function Documentation

◆ audio_new_producer_pool()

audio_buffer_pool_t* audio_new_producer_pool ( audio_buffer_format_t format,
int  buffer_count,
int  buffer_sample_count 
)

Allocate and initialise an audio producer pool.

Parameters
formatFormat of the audio buffer
buffer_count
buffer_sample_count
Returns
Pointer to an audio_buffer_pool

◆ audio_new_consumer_pool()

audio_buffer_pool_t* audio_new_consumer_pool ( audio_buffer_format_t format,
int  buffer_count,
int  buffer_sample_count 
)

Allocate and initialise an audio consumer pool.

Parameters
formatFormat of the audio buffer
buffer_count
buffer_sample_count
Returns
Pointer to an audio_buffer_pool

◆ audio_new_wrapping_buffer()

audio_buffer_t* audio_new_wrapping_buffer ( audio_buffer_format_t format,
mem_buffer_t buffer 
)

Allocate and initialise an audio wrapping buffer.

Parameters
formatFormat of the audio buffer
buffer
Returns
Pointer to an audio_buffer

◆ audio_new_buffer()

audio_buffer_t* audio_new_buffer ( audio_buffer_format_t format,
int  buffer_sample_count 
)

Allocate and initialise an new audio buffer.

Parameters
formatFormat of the audio buffer
buffer_sample_count
Returns
Pointer to an audio_buffer

◆ audio_init_buffer()

void audio_init_buffer ( audio_buffer_t audio_buffer,
audio_buffer_format_t format,
int  buffer_sample_count 
)

Initialise an audio buffer.

Parameters
audio_bufferPointer to an audio_buffer
formatFormat of the audio buffer
buffer_sample_count

◆ give_audio_buffer()

void give_audio_buffer ( audio_buffer_pool_t ac,
audio_buffer_t buffer 
)
Parameters
ac
buffer
Returns
Pointer to an audio_buffer

◆ take_audio_buffer()

audio_buffer_t* take_audio_buffer ( audio_buffer_pool_t ac,
bool  block 
)
Returns
Pointer to an audio_buffer

◆ audio_upsample()

void audio_upsample ( int16_t *  input,
int16_t *  output,
uint  output_count,
uint32_t  step 
)

todo we are currently limited to 4095+1 input samples step is fraction of an input sample per output sample * 0x1000 and should be < 0x1000 i.e. we we are up-sampling (otherwise results are undefined)

◆ audio_upsample_words()

void audio_upsample_words ( int16_t *  input,
int16_t *  output_aligned,
uint  output_word_count,
uint32_t  step 
)

similar but the output buffer is word aligned, and we output an even number of samples.. this is slightly faster than the above todo we are currently limited to 4095+1 input samples step is fraction of an input sample per output sample * 0x1000 and should be < 0x1000 i.e. we we are up-sampling (otherwise results are undefined)

◆ audio_upsample_double()

void audio_upsample_double ( int16_t *  input,
int16_t *  output,
uint  output_count,
uint32_t  step 
)

◆ audio_complete_connection()

void audio_complete_connection ( audio_connection_t connection,
audio_buffer_pool_t producer,
audio_buffer_pool_t consumer 
)

◆ get_free_audio_buffer()

audio_buffer_t* get_free_audio_buffer ( audio_buffer_pool_t context,
bool  block 
)

◆ queue_free_audio_buffer()

void queue_free_audio_buffer ( audio_buffer_pool_t context,
audio_buffer_t ab 
)

◆ get_full_audio_buffer()

audio_buffer_t* get_full_audio_buffer ( audio_buffer_pool_t context,
bool  block 
)

◆ queue_full_audio_buffer()

void queue_full_audio_buffer ( audio_buffer_pool_t context,
audio_buffer_t ab 
)

◆ consumer_pool_give_buffer_default()

void consumer_pool_give_buffer_default ( audio_connection_t connection,
audio_buffer_t buffer 
)

generally an pico_audio connection uses 3 of the defaults and does the hard work in one of them

◆ consumer_pool_take_buffer_default()

audio_buffer_t* consumer_pool_take_buffer_default ( audio_connection_t connection,
bool  block 
)

◆ producer_pool_give_buffer_default()

void producer_pool_give_buffer_default ( audio_connection_t connection,
audio_buffer_t buffer 
)

◆ producer_pool_take_buffer_default()

audio_buffer_t* producer_pool_take_buffer_default ( audio_connection_t connection,
bool  block 
)

◆ mono_to_mono_consumer_take()

audio_buffer_t* mono_to_mono_consumer_take ( audio_connection_t connection,
bool  block 
)

◆ mono_s8_to_mono_consumer_take()

audio_buffer_t* mono_s8_to_mono_consumer_take ( audio_connection_t connection,
bool  block 
)

◆ stereo_to_stereo_consumer_take()

audio_buffer_t* stereo_to_stereo_consumer_take ( audio_connection_t connection,
bool  block 
)

◆ mono_to_stereo_consumer_take()

audio_buffer_t* mono_to_stereo_consumer_take ( audio_connection_t connection,
bool  block 
)

◆ mono_s8_to_stereo_consumer_take()

audio_buffer_t* mono_s8_to_stereo_consumer_take ( audio_connection_t connection,
bool  block 
)

◆ stereo_to_stereo_producer_give()

void stereo_to_stereo_producer_give ( audio_connection_t connection,
audio_buffer_t buffer 
)