|
|
|
@@ -60,7 +60,7 @@ static const AVOption aformat_options[] = { |
|
|
|
|
|
|
|
AVFILTER_DEFINE_CLASS(aformat); |
|
|
|
|
|
|
|
#define PARSE_FORMATS(str, type, list, add_to_list, unref_fn, get_fmt, none, desc) \ |
|
|
|
#define PARSE_FORMATS(str, type, list, add_to_list, get_fmt, none, desc) \ |
|
|
|
do { \ |
|
|
|
char *next, *cur = str, sep; \ |
|
|
|
int ret; \ |
|
|
|
@@ -83,7 +83,6 @@ do { \ |
|
|
|
return AVERROR(EINVAL); \ |
|
|
|
} \ |
|
|
|
if ((ret = add_to_list(&list, fmt)) < 0) { \ |
|
|
|
unref_fn(&list); \ |
|
|
|
return ret; \ |
|
|
|
} \ |
|
|
|
\ |
|
|
|
@@ -102,11 +101,11 @@ static av_cold int init(AVFilterContext *ctx) |
|
|
|
AFormatContext *s = ctx->priv; |
|
|
|
|
|
|
|
PARSE_FORMATS(s->formats_str, enum AVSampleFormat, s->formats, |
|
|
|
ff_add_format, ff_formats_unref, av_get_sample_fmt, AV_SAMPLE_FMT_NONE, "sample format"); |
|
|
|
PARSE_FORMATS(s->sample_rates_str, int, s->sample_rates, ff_add_format, ff_formats_unref, |
|
|
|
ff_add_format, av_get_sample_fmt, AV_SAMPLE_FMT_NONE, "sample format"); |
|
|
|
PARSE_FORMATS(s->sample_rates_str, int, s->sample_rates, ff_add_format, |
|
|
|
get_sample_rate, 0, "sample rate"); |
|
|
|
PARSE_FORMATS(s->channel_layouts_str, uint64_t, s->channel_layouts, |
|
|
|
ff_add_channel_layout, ff_channel_layouts_unref, av_get_channel_layout, 0, |
|
|
|
ff_add_channel_layout, av_get_channel_layout, 0, |
|
|
|
"channel layout"); |
|
|
|
|
|
|
|
return 0; |
|
|
|
|