Added audio backends, fifo support, see #78

This commit is contained in:
Jarcode
2018-11-17 21:03:02 -08:00
parent 76325cb126
commit 1337253257
6 changed files with 215 additions and 89 deletions

24
fifo.h
View File

@@ -14,4 +14,26 @@ struct audio_data {
pthread_mutex_t mutex;
};
void* input_fifo(void* data);
struct audio_impl {
const char* name;
void (*init)(struct audio_data* data);
void* (*entry)(void* data);
};
#define AUDIO_FUNC(F) \
.F = (typeof(((struct audio_impl*) NULL)->F)) &F
extern struct audio_impl* audio_impls[4];
extern size_t audio_impls_idx;
static inline void register_audio_impl(struct audio_impl* impl) { audio_impls[audio_impls_idx++] = impl; }
#define AUDIO_ATTACH(N) \
static struct audio_impl N##_var = { \
.name = #N, \
AUDIO_FUNC(init), \
AUDIO_FUNC(entry), \
}; \
void __attribute__((constructor)) _##N##_construct(void) { \
register_audio_impl(&N##_var); \
}