ffmpeg filter

FilterGraph、InputFilter、OutputFilter

应用层
FilterGraph持有 AVFilterGraph、InputFilter、OutputFilter
InputFilter、OutputFilter 分别持有InputStream、OutputStream 指定了输入和输出

ffmpeg 执行过程中, 先初步填充FilterGraph(init_complex_filtergraph), 再根据FilterGraph的内容创建真实的链(configure_filtergraph)

AVFilterGraph

库中的图
AVFilterGraph持有AVFilterContext的数组, 图中有哪些filter
AVFilterLink 的数组, 指定图中"源"link

AVFilterContext

AVFilterContext是AVFilter的一个实例
持有AVFilterPad类型的input_pads和output_pads, 指定了输入pad 和输出pad
持有AVFilterLink类型的inputs和outputs, 制定了输入link和输出link

AVFilterLink

AVFilterContext之间的连接, 如果两个filter有链接,会包含 源AVFilterContext和目的AVFilterContext的指针, 源AVFilterContext的输出pad和目的AVFilterContext的输出pad
AVFilterContext通过AVFilterLink的连接会组成,chain链路

AVFilterPad

Pad是滤镜的输入\输出端口
AVFilterContext与AVFilterLink连接后, 约定了AVFilterLink如何调用AVFilterContext的方法
对AVFilterContext的output AVFilterPad, 说明了向外提供的调用函数, 连接到了下游AVFilterLink的srcpad
对AVFilterContext的intput AVFilterPad, 说明了使用外部的调用函数, 连接到了上游AVFilterLink的dstpad

类图如下(copy来的)

posted on 2021-12-10 18:00  WillingCPP  阅读(126)  评论(0)    收藏  举报

导航