}
}
- threshold[0] = s->hard_threshold * s->sigma;
+ threshold[0] = s->hard_threshold * s->sigma * M_SQRT2 * block_size * block_size * (1 << (s->depth - 8)) / 255.f;
threshold[1] = threshold[0] * sqrtf(2.f);
threshold[2] = threshold[0] * 2.f;
threshold[3] = threshold[0] * sqrtf(8.f);
}
pad.type = AVMEDIA_TYPE_VIDEO;
- pad.name = av_strdup("source");
+ pad.name = "source";
pad.config_props = config_input;
- if (!pad.name)
- return AVERROR(ENOMEM);
- if ((ret = ff_insert_inpad(ctx, 0, &pad)) < 0) {
- av_freep(&pad.name);
+ if ((ret = ff_insert_inpad(ctx, 0, &pad)) < 0)
return ret;
- }
if (s->ref) {
pad.type = AVMEDIA_TYPE_VIDEO;
- pad.name = av_strdup("reference");
+ pad.name = "reference";
pad.config_props = NULL;
- if (!pad.name)
- return AVERROR(ENOMEM);
- if ((ret = ff_insert_inpad(ctx, 1, &pad)) < 0) {
- av_freep(&pad.name);
+ if ((ret = ff_insert_inpad(ctx, 1, &pad)) < 0)
return ret;
- }
}
return 0;
BM3DContext *s = ctx->priv;
int i;
- for (i = 0; i < ctx->nb_inputs; i++)
- av_freep(&ctx->input_pads[i].name);
-
if (s->ref)
ff_framesync_uninit(&s->fs);
{ NULL }
};
-AVFilter ff_vf_bm3d = {
+const AVFilter ff_vf_bm3d = {
.name = "bm3d",
.description = NULL_IF_CONFIG_SMALL("Block-Matching 3D denoiser."),
.priv_size = sizeof(BM3DContext),