aboutsummaryrefslogtreecommitdiff
path: root/cmixer.h
diff options
context:
space:
mode:
Diffstat (limited to 'cmixer.h')
-rw-r--r--cmixer.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/cmixer.h b/cmixer.h
new file mode 100644
index 0000000..6ca680b
--- /dev/null
+++ b/cmixer.h
@@ -0,0 +1,70 @@
+/*
+** Copyright (c) 2017 rxi
+**
+** This library is free software; you can redistribute it and/or modify it
+** under the terms of the MIT license. See `cmixer.c` for details.
+**/
+
+#ifndef CMIXER_H
+#define CMIXER_H
+
+#define CM_VERSION "0.1.1"
+
+typedef short cm_Int16;
+typedef int cm_Int32;
+typedef long long cm_Int64;
+typedef unsigned char cm_UInt8;
+typedef unsigned short cm_UInt16;
+typedef unsigned cm_UInt32;
+
+typedef struct cm_Source cm_Source;
+
+typedef struct {
+ int type;
+ void *udata;
+ const char *msg;
+ cm_Int16 *buffer;
+ int length;
+} cm_Event;
+
+typedef void (*cm_EventHandler)(cm_Event *e);
+
+typedef struct {
+ cm_EventHandler handler;
+ void *udata;
+ int samplerate;
+ int length;
+} cm_SourceInfo;
+
+enum { CM_STATE_STOPPED, CM_STATE_PLAYING, CM_STATE_PAUSED };
+
+enum {
+ CM_EVENT_LOCK,
+ CM_EVENT_UNLOCK,
+ CM_EVENT_DESTROY,
+ CM_EVENT_SAMPLES,
+ CM_EVENT_REWIND
+};
+
+const char *cm_get_error(void);
+void cm_init(int samplerate);
+void cm_set_lock(cm_EventHandler lock);
+void cm_set_master_gain(double gain);
+void cm_process(cm_Int16 *dst, int len);
+
+cm_Source *cm_new_source(const cm_SourceInfo *info);
+cm_Source *cm_new_source_from_file(const char *filename);
+cm_Source *cm_new_source_from_mem(void *data, int size);
+void cm_destroy_source(cm_Source *src);
+double cm_get_length(cm_Source *src);
+double cm_get_position(cm_Source *src);
+int cm_get_state(cm_Source *src);
+void cm_set_gain(cm_Source *src, double gain);
+void cm_set_pan(cm_Source *src, double pan);
+void cm_set_pitch(cm_Source *src, double pitch);
+void cm_set_loop(cm_Source *src, int loop);
+void cm_play(cm_Source *src);
+void cm_pause(cm_Source *src);
+void cm_stop(cm_Source *src);
+
+#endif