diff options
Diffstat (limited to 'src/pipeline.h')
-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__ + |