From: Anton Khirnov Date: Mon, 25 Feb 2013 20:21:29 +0000 (+0100) Subject: af_aformat: switch to an AVOptions-based system. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0af7fe1f95a9e4a25e7e46f386360c701c49763d;p=ffmpeg af_aformat: switch to an AVOptions-based system. --- diff --git a/doc/filters.texi b/doc/filters.texi index 192cdfd8853..9d1302a62c8 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -133,13 +133,13 @@ The filter accepts the following named parameters: @table @option @item sample_fmts -A comma-separated list of requested sample formats. +A '|'-separated list of requested sample formats. @item sample_rates -A comma-separated list of requested sample rates. +A '|'-separated list of requested sample rates. @item channel_layouts -A comma-separated list of requested channel layouts. +A '|'-separated list of requested channel layouts. @end table @@ -147,7 +147,7 @@ If a parameter is omitted, all values are allowed. For example to force the output to either unsigned 8-bit or signed 16-bit stereo: @example -aformat=sample_fmts\=u8\,s16:channel_layouts\=stereo +aformat=sample_fmts=u8|s16:channel_layouts=stereo @end example @section amix diff --git a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c index 2059cf2b495..93760e1ec79 100644 --- a/libavfilter/af_aformat.c +++ b/libavfilter/af_aformat.c @@ -63,17 +63,24 @@ static const AVClass aformat_class = { #define PARSE_FORMATS(str, type, list, add_to_list, get_fmt, none, desc) \ do { \ - char *next, *cur = str; \ + char *next, *cur = str, sep; \ + \ + if (str && strchr(str, ',')) { \ + av_log(ctx, AV_LOG_WARNING, "This syntax is deprecated, use '|' to "\ + "separate %s.\n", desc); \ + sep = ','; \ + } else \ + sep = '|'; \ + \ while (cur) { \ type fmt; \ - next = strchr(cur, ','); \ + next = strchr(cur, sep); \ if (next) \ *next++ = 0; \ \ if ((fmt = get_fmt(cur)) == none) { \ av_log(ctx, AV_LOG_ERROR, "Error parsing " desc ": %s.\n", cur);\ - ret = AVERROR(EINVAL); \ - goto fail; \ + return AVERROR(EINVAL); \ } \ add_to_list(&list, fmt); \ \ @@ -90,20 +97,6 @@ static int get_sample_rate(const char *samplerate) static av_cold int init(AVFilterContext *ctx, const char *args) { AFormatContext *s = ctx->priv; - int ret; - - if (!args) { - av_log(ctx, AV_LOG_ERROR, "No parameters supplied.\n"); - return AVERROR(EINVAL); - } - - s->class = &aformat_class; - av_opt_set_defaults(s); - - if ((ret = av_set_options_string(s, args, "=", ":")) < 0) { - av_log(ctx, AV_LOG_ERROR, "Error parsing options string '%s'.\n", args); - return ret; - } PARSE_FORMATS(s->formats_str, enum AVSampleFormat, s->formats, ff_add_format, av_get_sample_fmt, AV_SAMPLE_FMT_NONE, "sample format"); @@ -113,9 +106,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args) ff_add_channel_layout, av_get_channel_layout, 0, "channel layout"); -fail: - av_opt_free(s); - return ret; + return 0; } static int query_formats(AVFilterContext *ctx) @@ -154,6 +145,7 @@ AVFilter avfilter_af_aformat = { .init = init, .query_formats = query_formats, .priv_size = sizeof(AFormatContext), + .priv_class = &aformat_class, .inputs = avfilter_af_aformat_inputs, .outputs = avfilter_af_aformat_outputs,