mirror of https://github.com/FFmpeg/FFmpeg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.3 KiB
99 lines
3.3 KiB
/* |
|
* Filter graphs |
|
* copyright (c) 2007 Bobby Bingham |
|
* |
|
* This file is part of FFmpeg. |
|
* |
|
* FFmpeg is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU Lesser General Public |
|
* License as published by the Free Software Foundation; either |
|
* version 2.1 of the License, or (at your option) any later version. |
|
* |
|
* FFmpeg is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
* Lesser General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Lesser General Public |
|
* License along with FFmpeg; if not, write to the Free Software |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
*/ |
|
|
|
#ifndef FFMPEG_AVFILTER_GRAPH_H |
|
#define FFMPEG_AVFILTER_GRAPH_H |
|
|
|
#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 |
|
* @param filter The filter to be added |
|
*/ |
|
void avfilter_graph_add_filter(AVFilterContext *graphctx, AVFilterContext *filter); |
|
|
|
/** |
|
* Configure the formats of all the links in the graph |
|
*/ |
|
int avfilter_graph_config_formats(AVFilterContext *graphctx); |
|
|
|
/** |
|
* Configure the resolution, etc of all links in the graph |
|
*/ |
|
int avfilter_graph_config_links(AVFilterContext *graphctx); |
|
|
|
#endif /* FFMPEG_AVFILTER_H */
|
|
|