From 57d4a1575cf348719fa5f3205c97eada9eac8818 Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Fri, 4 Apr 2008 20:06:37 +0000 Subject: Allow creation of filter graphs from a graph description structure which can be created programmatically or loaded from a file. Commited in SoC by Bobby Bingham on 2007-08-14 22:27:05 Originally committed as revision 12700 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/avfiltergraph.h | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'libavfilter/avfiltergraph.h') diff --git a/libavfilter/avfiltergraph.h b/libavfilter/avfiltergraph.h index 309921c800..9a70868182 100644 --- a/libavfilter/avfiltergraph.h +++ b/libavfilter/avfiltergraph.h @@ -24,6 +24,61 @@ #include "avfilter.h" +/** Linked-list of filters to create for an AVFilterGraphDesc */ +typedef struct AVFilterGraphDescFilter +{ + char *name; ///< filter instance name + char *filter; ///< name of filter type + char *args; ///< filter parameters + struct AVFilterGraphDescFilter *next; +} AVFilterGraphDescFilter; + +/** Linked-list of links between filters */ +typedef struct AVFilterGraphDescLink +{ + /* TODO: allow referencing pads by name, not just by index */ + char *src; ///< name of the source filter + unsigned srcpad; ///< index of the output pad on the source filter + + char *dst; ///< name of the dest filter + unsigned dstpad; ///< index of the input pad on the dest filter + + struct AVFilterGraphDescLink *next; +} AVFilterGraphDescLink; + +/** Linked-list of filter pads to be exported from the graph */ +typedef struct AVFilterGraphDescExport +{ + /* TODO: allow referencing pads by name, not just by index */ + char *name; ///< name of the exported pad + char *filter; ///< name of the filter + unsigned pad; ///< index of the pad to be exported + + struct AVFilterGraphDescExport *next; +} AVFilterGraphDescExport; + +/** Description of a graph to be loaded from a file, etc */ +typedef struct +{ + AVFilterGraphDescFilter *filters; ///< filters in the graph + AVFilterGraphDescLink *links; ///< links between the filters + AVFilterGraphDescExport *inputs; ///< inputs to export + AVFilterGraphDescExport *outputs; ///< outputs to export +} AVFilterGraphDesc; + +/** + * Load a filter graph description from a file + * @param filename Name of the file from which to load the description + * @return Pointer to the description on success. NULL on failure + */ +AVFilterGraphDesc *avfilter_graph_load_desc(const char *filename); + +/** + * Free a filter graph description + * @param desc The graph description to free + */ +void avfilter_graph_free_desc(AVFilterGraphDesc *desc); + /** * Add an existing filter instance to a filter graph. * @param graph The filter graph -- cgit v1.2.3