atadenoise算法的原理是什么,ffmpeg源码中哪个函数实现了atadenoise算法?

What's the principle of atadenoise algorithm and which function in ffmpeg source code implement the atadenoise algorithm?

我无法弄清楚 libavfilter/vf_atadenoise.c 中的哪个函数在 ffmpeg 中实现了 atadenoise...

顶层函数是

static int filter_frame(AVFilterLink *inlink, AVFrame *buf)

其中,调用

ctx->internal->execute(ctx, s->filter_slice, &td, NULL,
                       FFMIN3(s->planeheight[1],
                              s->planeheight[2],
                              ff_filter_get_nb_threads(ctx)));

导致过滤的线程执行。

s->filter_slice是根据输入参数指向实际过滤函数的函数指针。

引用函数指针发生在

static int config_input(AVFilterLink *inlink)

所有定制的过滤器函数都是使用从以下行开始的宏定义的,

#define WFILTER_ROW(type, name)