mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
lavfi: add avfilter_init_dict() for initializing a filter with a dict.
This commit is contained in:
parent
48a5adab62
commit
1ba95a9cca
@ -21,6 +21,7 @@ API changes, most recent first:
|
|||||||
Add AVFilterContext.graph pointing to the AVFilterGraph that contains the
|
Add AVFilterContext.graph pointing to the AVFilterGraph that contains the
|
||||||
filter.
|
filter.
|
||||||
Add avfilter_init_str(), deprecate avfilter_init_filter().
|
Add avfilter_init_str(), deprecate avfilter_init_filter().
|
||||||
|
Add avfilter_init_dict().
|
||||||
|
|
||||||
2013-xx-xx - lavfi 3.7.0 - avfilter.h
|
2013-xx-xx - lavfi 3.7.0 - avfilter.h
|
||||||
Add AVFilter.priv_class for exporting filter options through the AVOptions API
|
Add AVFilter.priv_class for exporting filter options through the AVOptions API
|
||||||
|
@ -515,6 +515,26 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (ctx->filter->priv_class) {
|
||||||
|
ret = av_opt_set_dict(ctx->priv, options);
|
||||||
|
if (ret < 0) {
|
||||||
|
av_log(ctx, AV_LOG_ERROR, "Error applying options to the filter.\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctx->filter->init)
|
||||||
|
ret = ctx->filter->init(ctx);
|
||||||
|
else if (ctx->filter->init_dict)
|
||||||
|
ret = ctx->filter->init_dict(ctx, options);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int avfilter_init_str(AVFilterContext *filter, const char *args)
|
int avfilter_init_str(AVFilterContext *filter, const char *args)
|
||||||
{
|
{
|
||||||
AVDictionary *options = NULL;
|
AVDictionary *options = NULL;
|
||||||
@ -616,18 +636,7 @@ int avfilter_init_str(AVFilterContext *filter, const char *args)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter->filter->priv_class) {
|
ret = avfilter_init_dict(filter, &options);
|
||||||
ret = av_opt_set_dict(filter->priv, &options);
|
|
||||||
if (ret < 0) {
|
|
||||||
av_log(filter, AV_LOG_ERROR, "Error applying options to the filter.\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (filter->filter->init)
|
|
||||||
ret = filter->filter->init(filter);
|
|
||||||
else if (filter->filter->init_dict)
|
|
||||||
ret = filter->filter->init_dict(filter, &options);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
@ -673,6 +673,28 @@ int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque
|
|||||||
*/
|
*/
|
||||||
int avfilter_init_str(AVFilterContext *ctx, const char *args);
|
int avfilter_init_str(AVFilterContext *ctx, const char *args);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a filter with the supplied dictionary of options.
|
||||||
|
*
|
||||||
|
* @param ctx uninitialized filter context to initialize
|
||||||
|
* @param options An AVDictionary filled with options for this filter. On
|
||||||
|
* return this parameter will be destroyed and replaced with
|
||||||
|
* a dict containing options that were not found. This dictionary
|
||||||
|
* must be freed by the caller.
|
||||||
|
* May be NULL, then this function is equivalent to
|
||||||
|
* avfilter_init_str() with the second parameter set to NULL.
|
||||||
|
* @return 0 on success, a negative AVERROR on failure
|
||||||
|
*
|
||||||
|
* @note This function and avfilter_init_str() do essentially the same thing,
|
||||||
|
* the difference is in manner in which the options are passed. It is up to the
|
||||||
|
* calling code to choose whichever is more preferable. The two functions also
|
||||||
|
* behave differently when some of the provided options are not declared as
|
||||||
|
* supported by the filter. In such a case, avfilter_init_str() will fail, but
|
||||||
|
* this function will leave those extra options in the options AVDictionary and
|
||||||
|
* continue as usual.
|
||||||
|
*/
|
||||||
|
int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free a filter context. This will also remove the filter from its
|
* Free a filter context. This will also remove the filter from its
|
||||||
* filtergraph's list of filters.
|
* filtergraph's list of filters.
|
||||||
|
Loading…
Reference in New Issue
Block a user