diff options
author | Nicolas Dato <nicolas.dato@gmail.com> | 2023-10-01 20:29:04 -0300 |
---|---|---|
committer | Nicolas Dato <nicolas.dato@gmail.com> | 2023-10-01 20:29:04 -0300 |
commit | 0ad04cccbecd82d2683b54338b8dd088492b7215 (patch) | |
tree | a94fec36116a7e1c00939e2c896450306f2ce31c | |
download | libtuberia-0ad04cccbecd82d2683b54338b8dd088492b7215.tar.gz |
Adding API
-rw-r--r-- | src/pipeline.h | 41 |
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__ + |