aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dato <nicolas.dato@gmail.com>2023-10-01 20:29:04 -0300
committerNicolas Dato <nicolas.dato@gmail.com>2023-10-01 20:29:04 -0300
commit0ad04cccbecd82d2683b54338b8dd088492b7215 (patch)
treea94fec36116a7e1c00939e2c896450306f2ce31c
downloadlibtuberia-0ad04cccbecd82d2683b54338b8dd088492b7215.tar.gz
Adding API
-rw-r--r--src/pipeline.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/pipeline.h b/src/pipeline.h
new file mode 100644
index 0000000..42fed98
--- /dev/null
+++ b/src/pipeline.h
@@ -0,0 +1,41 @@
+#ifndef __LIBPIPELINE_H__
+#define __LIBPIPELINE_H__
+
+typedef struct pl_pipleline pl_pipeline;
+
+typedef void *(*pl_fetch)(void *opaque);
+typedef void *(*pl_process)(void *element, void *opaque);
+typedef void (*pl_ready)(void *element, void *opaque);
+typedef void (*pl_sink)(void *element, void *opaque);
+
+struct pl_stage {
+ struct pl_sage *next;
+ int nqueue;
+ pl_process *process;
+ void *opaque;
+};
+
+struct pl_source {
+ struct pl_sage *next;
+ int nqueue;
+ pl_fetch *fetch;
+ void *opaque;
+};
+
+struct pl_source *pl_source_alloc(int nqueue, pl_fetch *fetch);
+struct pl_stage *pl_stage_alloc(int nqueue, pl_process *process);
+void pl_stage_free(struct pl_stage **stage);
+void pl_source_and_stages_free(struct pl_source **stage);
+
+int pl_stage_append(struct pl_source *source, struct pl_stage *stage);
+
+pl_pipeline *pl_create(struct pl_source *source, pl_sink *sink, void *opaque);
+int pl_start(pl_pipeline *pipeline);
+int pl_stop(pl_pipeline *pipeline);
+void pl_free(pl_pipeline **pipeline);
+
+int pl_inject(pl_pipeline *pipeline, void *element);
+void *pl_retrive(pl_pipeline *pipeline, int timeout_ms);
+
+#endif //__LIBPIPELINE_H__
+