summaryrefslogtreecommitdiff
path: root/galsa.h
diff options
context:
space:
mode:
Diffstat (limited to 'galsa.h')
-rw-r--r--galsa.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/galsa.h b/galsa.h
new file mode 100644
index 0000000..5f5da40
--- /dev/null
+++ b/galsa.h
@@ -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