diff options
Diffstat (limited to 'galsa.h')
-rw-r--r-- | galsa.h | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -0,0 +1,49 @@ +#ifndef _GALSA_H +#define _GALSA_H + +#include <alsa/asoundlib.h> +#include <glib.h> + +typedef short sample; + +enum dev_runstate { + DEV_OPEN, + DEV_RUNNING, + DEV_STOPREQ, +}; +enum qe_message { + QE_DATA, + QE_ERROR, + QE_STOPPED, +}; + +struct device { + char *path; + unsigned rate; + int chan; + snd_pcm_t *handle; + GAsyncQueue *queue; + size_t pktsize; + + GThread *thread; + enum dev_runstate state; +}; + +struct qe { + enum qe_message message; + int errcode; + char *errp; + + ssize_t size; + sample samples[]; +}; + +extern struct device *device_open(const char *path, + unsigned rate, int chan, size_t pktsize); +extern void device_start(struct device *dev); +extern void device_stop(struct device *dev); +extern void device_stop_wait(struct device *dev); +extern void device_stop_done(struct device *dev); +extern void device_close(struct device *dev); + +#endif |