mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-01-29 01:11:17 +01:00
lavfi: add a preinit callback to filters.
It is necessary for filters with child objects, to set the class and default options values.
This commit is contained in:
@@ -692,6 +692,7 @@ static int default_execute(AVFilterContext *ctx, avfilter_action_func *func, voi
|
||||
AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name)
|
||||
{
|
||||
AVFilterContext *ret;
|
||||
int preinited = 0;
|
||||
|
||||
if (!filter)
|
||||
return NULL;
|
||||
@@ -708,6 +709,11 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name)
|
||||
if (!ret->priv)
|
||||
goto err;
|
||||
}
|
||||
if (filter->preinit) {
|
||||
if (filter->preinit(ret) < 0)
|
||||
goto err;
|
||||
preinited = 1;
|
||||
}
|
||||
|
||||
av_opt_set_defaults(ret);
|
||||
if (filter->priv_class) {
|
||||
@@ -745,6 +751,8 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name)
|
||||
return ret;
|
||||
|
||||
err:
|
||||
if (preinited)
|
||||
filter->uninit(ret);
|
||||
av_freep(&ret->inputs);
|
||||
av_freep(&ret->input_pads);
|
||||
ret->nb_inputs = 0;
|
||||
|
||||
Reference in New Issue
Block a user