Commit 0af7fe1f authored by Anton Khirnov's avatar Anton Khirnov

af_aformat: switch to an AVOptions-based system.

parent d28cb849
......@@ -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
......
......@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment