diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-11-07 18:39:52 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-11-07 18:39:52 +0000 |
commit | c58572f87b75bd5f08aeb7a9fd8e5ff6239d4db7 (patch) | |
tree | f6832e2dd41dbc96233cff444753ca4b532c6478 | |
parent | 8ce803db51a28eb662b6271b2b223e0312bdb3d2 (diff) | |
download | ffmpeg-c58572f87b75bd5f08aeb7a9fd8e5ff6239d4db7.tar.gz |
Change the signature of create_filter() to make it return an error code.
Originally committed as revision 25691 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavfilter/graphparser.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index fb70805d4d..125bd9e48e 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -86,21 +86,20 @@ static char *parse_link_name(const char **buf, AVClass *log_ctx) * filtergraph in *ctx. * * @param ctx the filtergraph context + * @param put here a filter context in case of successful creation and configuration, NULL otherwise. * @param index an index which is supposed to be unique for each filter instance added to the filtergraph * @param filt_name the name of the filter to create * @param args the arguments provided to the filter during its initialization * @param log_ctx the log context to use - * @return a filter context in case of successful creation and configuration, NULL otherwise. + * @return 0 in case of success, a negative AVERROR code otherwise */ -static AVFilterContext *create_filter(AVFilterGraph *ctx, int index, - const char *filt_name, const char *args, - AVClass *log_ctx) +static int create_filter(AVFilterContext **filt_ctx, AVFilterGraph *ctx, int index, + const char *filt_name, const char *args, AVClass *log_ctx) { - AVFilterContext *filt_ctx; - AVFilter *filt; char inst_name[30]; char tmp_args[256]; + int ret; snprintf(inst_name, sizeof(inst_name), "Filter %d %s", index, filt_name); @@ -109,19 +108,19 @@ static AVFilterContext *create_filter(AVFilterGraph *ctx, int index, if (!filt) { av_log(log_ctx, AV_LOG_ERROR, "No such filter: '%s'\n", filt_name); - return NULL; + return AVERROR(EINVAL); } - avfilter_open(&filt_ctx, filt, inst_name); - if (!filt_ctx) { + ret = avfilter_open(filt_ctx, filt, inst_name); + if (!*filt_ctx) { av_log(log_ctx, AV_LOG_ERROR, "Error creating filter '%s'\n", filt_name); - return NULL; + return ret; } - if (avfilter_graph_add_filter(ctx, filt_ctx) < 0) { - avfilter_destroy(filt_ctx); - return NULL; + if ((ret = avfilter_graph_add_filter(ctx, *filt_ctx)) < 0) { + avfilter_destroy(*filt_ctx); + return ret; } if (!strcmp(filt_name, "scale") && !strstr(args, "flags")) { @@ -130,13 +129,13 @@ static AVFilterContext *create_filter(AVFilterGraph *ctx, int index, args = tmp_args; } - if (avfilter_init_filter(filt_ctx, args, NULL)) { + if ((ret = avfilter_init_filter(*filt_ctx, args, NULL)) < 0) { av_log(log_ctx, AV_LOG_ERROR, "Error initializing filter '%s' with args '%s'\n", filt_name, args); - return NULL; + return ret; } - return filt_ctx; + return 0; } /** @@ -147,17 +146,18 @@ static AVFilterContext *parse_filter(const char **buf, AVFilterGraph *graph, { char *opts = NULL; char *name = av_get_token(buf, "=,;[\n"); - AVFilterContext *ret; + AVFilterContext *filt_ctx; + int ret; if (**buf == '=') { (*buf)++; opts = av_get_token(buf, "[],;\n"); } - ret = create_filter(graph, index, name, opts, log_ctx); + ret = create_filter(&filt_ctx, graph, index, name, opts, log_ctx); av_free(name); av_free(opts); - return ret; + return filt_ctx; } static void free_inout(AVFilterInOut *head) |