12 #include "hardware/sync.h"
26 #ifndef SPINLOCK_ID_AUDIO_FREE_LIST_LOCK
27 #define SPINLOCK_ID_AUDIO_FREE_LIST_LOCK 6
31 #ifndef SPINLOCK_ID_AUDIO_PREPARED_LISTS_LOCK
32 #define SPINLOCK_ID_AUDIO_PREPARED_LISTS_LOCK 7
36 #ifndef PICO_AUDIO_NOOP
37 #define PICO_AUDIO_NOOP 0
41 #define AUDIO_BUFFER_FORMAT_PCM_S16 1
42 #define AUDIO_BUFFER_FORMAT_PCM_S8 2
43 #define AUDIO_BUFFER_FORMAT_PCM_U16 3
44 #define AUDIO_BUFFER_FORMAT_PCM_U8 4
66 uint32_t sample_count;
67 uint32_t max_sample_count;
77 ac_producer, ac_consumer
82 spin_lock_t *free_list_spin_lock;
85 spin_lock_t *prepared_list_spin_lock;
114 int buffer_sample_count);
125 int buffer_sample_count);
175 buffer->sample_count = 0;
185 void audio_upsample(int16_t *input, int16_t *output, uint output_count, uint32_t step);
248 enum audio_correction_mode {
258 uint32_t current_producer_buffer_pos;
264 uint32_t current_consumer_buffer_pos;
302 } pio_audio_channel_config_t;
struct audio_format audio_format_t
Audio format definition.
struct audio_buffer_format audio_buffer_format_t
Audio buffer format definition.
struct audio_buffer audio_buffer_t
Audio buffer definition.
audio_buffer_t * mono_s8_to_stereo_consumer_take(audio_connection_t *connection, bool block)
Definition: audio.cpp:248
audio_buffer_t * get_full_audio_buffer(audio_buffer_pool_t *context, bool block)
Definition: audio.cpp:98
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.
Definition: audio.cpp:196
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.
Definition: audio.cpp:189
void queue_free_audio_buffer(audio_buffer_pool_t *context, audio_buffer_t *ab)
Definition: audio.cpp:90
audio_buffer_t * mono_to_mono_consumer_take(audio_connection_t *connection, bool block)
Definition: audio.cpp:230
audio_buffer_t * mono_s8_to_mono_consumer_take(audio_connection_t *connection, bool block)
Definition: audio.cpp:244
audio_buffer_t * audio_new_wrapping_buffer(audio_buffer_format_t *format, mem_buffer_t *buffer)
Allocate and initialise an audio wrapping buffer.
Definition: audio.cpp:175
void producer_pool_give_buffer_default(audio_connection_t *connection, audio_buffer_t *buffer)
Definition: audio.cpp:119
audio_buffer_t * audio_new_buffer(audio_buffer_format_t *format, int buffer_sample_count)
Allocate and initialise an new audio buffer.
Definition: audio.cpp:142
void queue_full_audio_buffer(audio_buffer_pool_t *context, audio_buffer_t *ab)
Definition: audio.cpp:111
audio_buffer_t * consumer_pool_take_buffer_default(audio_connection_t *connection, bool block)
Definition: audio.cpp:131
void give_audio_buffer(audio_buffer_pool_t *ac, audio_buffer_t *buffer)
Definition: audio.cpp:212
audio_buffer_t * mono_to_stereo_consumer_take(audio_connection_t *connection, bool block)
Definition: audio.cpp:240
void consumer_pool_give_buffer_default(audio_connection_t *connection, audio_buffer_t *buffer)
Definition: audio.cpp:127
audio_buffer_t * producer_pool_take_buffer_default(audio_connection_t *connection, bool block)
Definition: audio.cpp:123
void stereo_to_stereo_producer_give(audio_connection_t *connection, audio_buffer_t *buffer)
Definition: audio.cpp:252
void audio_upsample(int16_t *input, int16_t *output, uint output_count, uint32_t step)
audio_buffer_t * take_audio_buffer(audio_buffer_pool_t *ac, bool block)
Definition: audio.cpp:221
audio_buffer_t * stereo_to_stereo_consumer_take(audio_connection_t *connection, bool block)
Definition: audio.cpp:235
audio_buffer_t * get_free_audio_buffer(audio_buffer_pool_t *context, bool block)
Definition: audio.cpp:77
void audio_upsample_words(int16_t *input, int16_t *output_aligned, uint output_word_count, uint32_t step)
void audio_init_buffer(audio_buffer_t *audio_buffer, audio_buffer_format_t *format, int buffer_sample_count)
Initialise an audio buffer.
Definition: audio.cpp:148
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)
Definition: audio.cpp:202
Audio buffer definition.
Definition: audio.h:63
Wrapper structure around a memory buffer.
Definition: buffer.h:40