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: ...@@ -133,13 +133,13 @@ The filter accepts the following named parameters:
@table @option @table @option
@item sample_fmts @item sample_fmts
A comma-separated list of requested sample formats. A '|'-separated list of requested sample formats.
@item sample_rates @item sample_rates
A comma-separated list of requested sample rates. A '|'-separated list of requested sample rates.
@item channel_layouts @item channel_layouts
A comma-separated list of requested channel layouts. A '|'-separated list of requested channel layouts.
@end table @end table
...@@ -147,7 +147,7 @@ If a parameter is omitted, all values are allowed. ...@@ -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: For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
@example @example
aformat=sample_fmts\=u8\,s16:channel_layouts\=stereo aformat=sample_fmts=u8|s16:channel_layouts=stereo
@end example @end example
@section amix @section amix
......
...@@ -63,17 +63,24 @@ static const AVClass aformat_class = { ...@@ -63,17 +63,24 @@ static const AVClass aformat_class = {
#define PARSE_FORMATS(str, type, list, add_to_list, get_fmt, none, desc) \ #define PARSE_FORMATS(str, type, list, add_to_list, get_fmt, none, desc) \
do { \ 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) { \ while (cur) { \
type fmt; \ type fmt; \
next = strchr(cur, ','); \ next = strchr(cur, sep); \
if (next) \ if (next) \
*next++ = 0; \ *next++ = 0; \
\ \
if ((fmt = get_fmt(cur)) == none) { \ if ((fmt = get_fmt(cur)) == none) { \
av_log(ctx, AV_LOG_ERROR, "Error parsing " desc ": %s.\n", cur);\ av_log(ctx, AV_LOG_ERROR, "Error parsing " desc ": %s.\n", cur);\
ret = AVERROR(EINVAL); \ return AVERROR(EINVAL); \
goto fail; \
} \ } \
add_to_list(&list, fmt); \ add_to_list(&list, fmt); \
\ \
...@@ -90,20 +97,6 @@ static int get_sample_rate(const char *samplerate) ...@@ -90,20 +97,6 @@ static int get_sample_rate(const char *samplerate)
static av_cold int init(AVFilterContext *ctx, const char *args) static av_cold int init(AVFilterContext *ctx, const char *args)
{ {
AFormatContext *s = ctx->priv; 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, PARSE_FORMATS(s->formats_str, enum AVSampleFormat, s->formats,
ff_add_format, av_get_sample_fmt, AV_SAMPLE_FMT_NONE, "sample format"); 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) ...@@ -113,9 +106,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
ff_add_channel_layout, av_get_channel_layout, 0, ff_add_channel_layout, av_get_channel_layout, 0,
"channel layout"); "channel layout");
fail: return 0;
av_opt_free(s);
return ret;
} }
static int query_formats(AVFilterContext *ctx) static int query_formats(AVFilterContext *ctx)
...@@ -154,6 +145,7 @@ AVFilter avfilter_af_aformat = { ...@@ -154,6 +145,7 @@ AVFilter avfilter_af_aformat = {
.init = init, .init = init,
.query_formats = query_formats, .query_formats = query_formats,
.priv_size = sizeof(AFormatContext), .priv_size = sizeof(AFormatContext),
.priv_class = &aformat_class,
.inputs = avfilter_af_aformat_inputs, .inputs = avfilter_af_aformat_inputs,
.outputs = avfilter_af_aformat_outputs, .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