[FFmpeg-cvslog] af_aformat: switch to an AVOptions-based system.
Anton Khirnov
git at videolan.org
Wed Apr 10 14:06:50 CEST 2013
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Mon Feb 25 21:21:29 2013 +0100| [0af7fe1f95a9e4a25e7e46f386360c701c49763d] | committer: Anton Khirnov
af_aformat: switch to an AVOptions-based system.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0af7fe1f95a9e4a25e7e46f386360c701c49763d
---
doc/filters.texi | 8 ++++----
libavfilter/af_aformat.c | 34 +++++++++++++---------------------
2 files changed, 17 insertions(+), 25 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 192cdfd..9d1302a 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 2059cf2..93760e1 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,
More information about the ffmpeg-cvslog
mailing list