File syn_audio.h¶
File List > audio > syn_audio.h
Go to the documentation of this file
#ifndef SYN_AUDIO_H
#define SYN_AUDIO_H
#include "../common/syn_defs.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*SYN_Audio_OutputFn)(const int16_t *samples, size_t count, void *ctx);
typedef struct {
int16_t *buf;
size_t buf_capacity;
size_t half_size;
uint32_t sample_rate_hz;
uint8_t channels;
SYN_Audio_OutputFn out_fn;
void *ctx;
} SYN_Audio_Config;
typedef struct {
SYN_Audio_Config cfg;
volatile uint8_t active_half;
volatile size_t fill_pos;
volatile bool running;
uint32_t underrun_cnt;
uint32_t frames_played;
} SYN_Audio;
SYN_Status syn_audio_init(SYN_Audio *audio, const SYN_Audio_Config *cfg);
SYN_Status syn_audio_start(SYN_Audio *audio);
SYN_Status syn_audio_stop(SYN_Audio *audio);
size_t syn_audio_feed(SYN_Audio *audio, const int16_t *samples, size_t count);
void syn_audio_isr_half(SYN_Audio *audio);
void syn_audio_isr_complete(SYN_Audio *audio);
#ifdef __cplusplus
}
#endif
#endif /* SYN_AUDIO_H */