如何将ffmpeg中的atadenoise迁移到我自己的项目中?

如何将ffmpeg中的atadenoise迁移到我自己的项目中?,ffmpeg,Ffmpeg,这是atadenoise过滤器的入口: libavfilter/vf_atadenoise.c static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) { ... } // const char *filter_descr = "scale=78:24,transpose=cclock"; const char *filter_descr = "

这是atadenoise过滤器的入口:

libavfilter/vf_atadenoise.c

static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
{
   ...
}
// const char *filter_descr = "scale=78:24,transpose=cclock";
const char *filter_descr =
    "atadenoise=0a=0.2:1a=0.2:2a=0.2:0b=0.3:1b=0.3:2b=0.3";
/* other way:
   scale=78:24 [scl]; [scl] transpose=cclock // assumes "[in]" and "[out]" to be input output pads respectively
 */
 
 ......
 
int main(int argc, char **argv)
{
    int ret;
    AVPacket packet;
    AVFrame *frame;
    AVFrame *filt_frame;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s file\n", argv[0]);
        exit(1);
    }
......
哪个用来打电话

s->dsp.filter_row[p](src, dst, srcf, w, mid, size, thra, thrb, weights);
因此,根据配置的参数选择具体的降噪方法:

static void fweight_row##name(const uint8_t *ssrc, uint8_t *ddst,           \
                              const uint8_t *ssrcf[SIZE],                   \
                              int w, int mid, int size,                     \
                              int thra, int thrb, const float *weights)     \
...

static void fweight_row##name##_serial(const uint8_t *ssrc, uint8_t *ddst,  \
                                       const uint8_t *ssrcf[SIZE],          \
                                       int w, int mid, int size,            \
                                       int thra, int thrb,                  \
                                       const float *weights)                \
                                       
.....                                       
          
我使用示例代码调用atadenoise函数:

doc/examples/filtering\u video.c

static int filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
{
   ...
}
// const char *filter_descr = "scale=78:24,transpose=cclock";
const char *filter_descr =
    "atadenoise=0a=0.2:1a=0.2:2a=0.2:0b=0.3:1b=0.3:2b=0.3";
/* other way:
   scale=78:24 [scl]; [scl] transpose=cclock // assumes "[in]" and "[out]" to be input output pads respectively
 */
 
 ......
 
int main(int argc, char **argv)
{
    int ret;
    AVPacket packet;
    AVFrame *frame;
    AVFrame *filt_frame;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s file\n", argv[0]);
        exit(1);
    }
......
以这种方式配置
const char*filter\u descr
以调用atadenoise:

const char *filter_descr =
    "atadenoise=0a=0.2:1a=0.2:2a=0.2:0b=0.3:1b=0.3:2b=0.3";
如果我想将atadenoise连接到我的项目,我应该从filter_slice开始。但我不知道如何向它提供参数

目前我使用Xcode在atadenoise中设置断点,但这并不稳定。现在我不能插手了。也许我不小心改变了一些配置