创建滤波器图 ( filter graph )
filter graph简单说明
根据上层应用的指令,创建一个filter graph,一个典型的filter graph例子如下图:
[main]
input --> split ---------------------> overlay --> output
| ^
|[tmp] [flip]|
+-----> crop --> vflip -------+
关于这个 graph 的解释,请参考这个链接的说明:http://blog.youkuaiyun.com/hunterhuang2013/article/details/61614859
命令行为:
ffmpeg.exe -i pig.mp4 -vf "split [main][tmp];[tmp] crop=iw:ih/2:0:0, vflip[flip];[main][flip] overlay=0:H/2" pig_out.mp4
生成的 filter graph如下图所示:
filter graph全局变量
图中顶上的第一个框,是ffmpeg.c中定义的全局变量,与之相关的是如下两个定义:
FilterGraph **filtergraphs;
int nb_filtergraphs;
前者是一个指针数组,含有 nb_filtergraphs 个 struct FilterGraph 类型的指针。其中每一个指针,指向 struct FilterGraph 的类型的变量,用来表述一个滤波器图。
其中,struct FilterGraph定义如下:
typedef struct FilterGraph {
int index;
const char *graph_desc;
AVFilterGraph *graph;