ffmpeg | branch: master | James Almer <[email protected]> | Sat Oct 21 15:35:14 2017 -0300| [5045cf27aacb3f53f10a465a84e9f52bc95c1594] | committer: James Almer
Merge commit '52067b3c0e5ddbcf7021a093420798420351a9e2' * commit '52067b3c0e5ddbcf7021a093420798420351a9e2': lavfi: Drop deprecated filter initialization Merged-by: James Almer <[email protected]> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5045cf27aacb3f53f10a465a84e9f52bc95c1594 --- libavfilter/avfilter.c | 7 ------- libavfilter/avfilter.h | 15 --------------- libavfilter/version.h | 3 --- 3 files changed, 25 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 07c35d7dda..da0cb791d2 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -931,13 +931,6 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options, return count; } -#if FF_API_AVFILTER_INIT_FILTER -int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque) -{ - return avfilter_init_str(filter, args); -} -#endif - int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options) { int ret = 0; diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 3d7bd33215..2f6b26050e 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -729,21 +729,6 @@ attribute_deprecated AVFilter **av_filter_next(AVFilter **filter); #endif -#if FF_API_AVFILTER_INIT_FILTER -/** - * Initialize a filter. - * - * @param filter the filter to initialize - * @param args A string of parameters to use when initializing the filter. - * The format and meaning of this string varies by filter. - * @param opaque Any extra non-string data needed by the filter. The meaning - * of this parameter varies by filter. - * @return zero on success - */ -attribute_deprecated -int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque); -#endif - /** * Initialize a filter with the supplied parameters. * diff --git a/libavfilter/version.h b/libavfilter/version.h index ad2178241e..49933e93eb 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -52,9 +52,6 @@ #ifndef FF_API_OLD_FILTER_OPTS_ERROR #define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 8) #endif -#ifndef FF_API_AVFILTER_INIT_FILTER -#define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 7) -#endif #ifndef FF_API_OLD_FILTER_REGISTER #define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 7) #endif ====================================================================== diff --cc libavfilter/avfilter.c index 07c35d7dda,439eee4dd4..da0cb791d2 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@@ -846,98 -528,39 +846,91 @@@ void avfilter_free(AVFilterContext *fil av_free(filter); } -/* process a list of value1:value2:..., each value corresponding - * to subsequent AVOption, in the order they are declared */ -static int process_unnamed_options(AVFilterContext *ctx, AVDictionary **options, - const char *args) +int ff_filter_get_nb_threads(AVFilterContext *ctx) +{ + if (ctx->nb_threads > 0) + return FFMIN(ctx->nb_threads, ctx->graph->nb_threads); + return ctx->graph->nb_threads; +} + +static int process_options(AVFilterContext *ctx, AVDictionary **options, + const char *args) { const AVOption *o = NULL; - const char *p = args; - char *val; + int ret, count = 0; + char *av_uninit(parsed_key), *av_uninit(value); + const char *key; + int offset= -1; + + if (!args) + return 0; + + while (*args) { + const char *shorthand = NULL; - while (*p) { o = av_opt_next(ctx->priv, o); - if (!o) { - av_log(ctx, AV_LOG_ERROR, "More options provided than " - "this filter supports.\n"); - return AVERROR(EINVAL); + if (o) { + if (o->type == AV_OPT_TYPE_CONST || o->offset == offset) + continue; + offset = o->offset; + shorthand = o->name; } - if (o->type == AV_OPT_TYPE_CONST) - continue; - val = av_get_token(&p, ":"); - if (!val) - return AVERROR(ENOMEM); + ret = av_opt_get_key_value(&args, "=", ":", + shorthand ? AV_OPT_FLAG_IMPLICIT_KEY : 0, + &parsed_key, &value); + if (ret < 0) { + if (ret == AVERROR(EINVAL)) + av_log(ctx, AV_LOG_ERROR, "No option name near '%s'\n", args); + else + av_log(ctx, AV_LOG_ERROR, "Unable to parse '%s': %s\n", args, + av_err2str(ret)); + return ret; + } + if (*args) + args++; + if (parsed_key) { + key = parsed_key; + while ((o = av_opt_next(ctx->priv, o))); /* discard all remaining shorthand */ + } else { + key = shorthand; + } - av_dict_set(options, o->name, val, 0); + av_log(ctx, AV_LOG_DEBUG, "Setting '%s' to value '%s'\n", key, value); - av_freep(&val); - if (*p) - p++; + if (av_opt_find(ctx, key, NULL, 0, 0)) { + ret = av_opt_set(ctx, key, value, 0); + if (ret < 0) { + av_free(value); + av_free(parsed_key); + return ret; + } + } else { + av_dict_set(options, key, value, 0); + if ((ret = av_opt_set(ctx->priv, key, value, AV_OPT_SEARCH_CHILDREN)) < 0) { + if (!av_opt_find(ctx->priv, key, NULL, 0, AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) { + if (ret == AVERROR_OPTION_NOT_FOUND) + av_log(ctx, AV_LOG_ERROR, "Option '%s' not found\n", key); + av_free(value); + av_free(parsed_key); + return ret; + } + } + } + + av_free(value); + av_free(parsed_key); + count++; } - return 0; + if (ctx->enable_str) { + ret = set_enable_expr(ctx, ctx->enable_str); + if (ret < 0) + return ret; + } + return count; } - #if FF_API_AVFILTER_INIT_FILTER - int avfilter_init_filter(AVFilterContext *filter, const char *args, void *opaque) - { - return avfilter_init_str(filter, args); - } - #endif - int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options) { int ret = 0; diff --cc libavfilter/version.h index ad2178241e,ef2b34cc6f..49933e93eb --- a/libavfilter/version.h +++ b/libavfilter/version.h @@@ -49,12 -49,6 +49,9 @@@ * the public API and may change, break or disappear at any time. */ +#ifndef FF_API_OLD_FILTER_OPTS_ERROR +#define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 8) +#endif - #ifndef FF_API_AVFILTER_INIT_FILTER - #define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 7) - #endif #ifndef FF_API_OLD_FILTER_REGISTER #define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 7) #endif _______________________________________________ ffmpeg-cvslog mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
