From 7b3eb745b98b04dd8a4970b9fd6c98998e858fc1 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 25 Feb 2013 21:21:29 +0100 Subject: [PATCH] vsrc_testsrc: switch to an AVOptions-based system. --- doc/filters.texi | 3 +-- libavfilter/vsrc_testsrc.c | 30 ++++++++++++------------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index c5e1b821a4..87a3d1f48a 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -2466,8 +2466,7 @@ The @code{testsrc} source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp. This is mainly intended for testing purposes. -Both sources accept an optional sequence of @var{key}=@var{value} pairs, -separated by ":". The description of the accepted options follows. +The sources accept the following options: @table @option diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c index 674d6d716c..af79b7a43b 100644 --- a/libavfilter/vsrc_testsrc.c +++ b/libavfilter/vsrc_testsrc.c @@ -60,31 +60,25 @@ typedef struct { } TestSourceContext; #define OFFSET(x) offsetof(TestSourceContext, x) +#define FLAGS AV_OPT_FLAG_VIDEO_PARAM static const AVOption testsrc_options[] = { - { "size", "set video size", OFFSET(size), AV_OPT_TYPE_STRING, {.str = "320x240"}}, - { "s", "set video size", OFFSET(size), AV_OPT_TYPE_STRING, {.str = "320x240"}}, - { "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str = "25"}, }, - { "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str = "25"}, }, - { "duration", "set video duration", OFFSET(duration), AV_OPT_TYPE_STRING, {.str = NULL}, }, - { "sar", "set video sample aspect ratio", OFFSET(sar), AV_OPT_TYPE_RATIONAL, {.dbl = 1}, 0, INT_MAX }, + { "size", "set video size", OFFSET(size), AV_OPT_TYPE_STRING, {.str = "320x240"}, .flags = FLAGS }, + { "s", "set video size", OFFSET(size), AV_OPT_TYPE_STRING, {.str = "320x240"}, .flags = FLAGS }, + { "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str = "25"}, .flags = FLAGS }, + { "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str = "25"}, .flags = FLAGS }, + { "duration", "set video duration", OFFSET(duration), AV_OPT_TYPE_STRING, {.str = NULL}, .flags = FLAGS }, + { "sar", "set video sample aspect ratio", OFFSET(sar), AV_OPT_TYPE_RATIONAL, {.dbl = 1}, 0, INT_MAX, FLAGS }, { NULL }, }; -static av_cold int init_common(AVFilterContext *ctx, const char *args) +static av_cold int init_common(AVFilterContext *ctx) { TestSourceContext *test = ctx->priv; AVRational frame_rate_q; int64_t duration = -1; int ret = 0; - av_opt_set_defaults(test); - - if ((ret = (av_set_options_string(test, args, "=", ":"))) < 0) { - av_log(ctx, AV_LOG_ERROR, "Error parsing options string: '%s'\n", args); - return ret; - } - if ((ret = av_parse_video_size(&test->w, &test->h, test->size)) < 0) { av_log(ctx, AV_LOG_ERROR, "Invalid frame size: '%s'\n", test->size); return ret; @@ -338,9 +332,8 @@ static av_cold int test_init(AVFilterContext *ctx, const char *args) { TestSourceContext *test = ctx->priv; - test->class = &testsrc_class; test->fill_picture_fn = test_fill_picture; - return init_common(ctx, args); + return init_common(ctx); } static int test_query_formats(AVFilterContext *ctx) @@ -366,6 +359,7 @@ AVFilter avfilter_vsrc_testsrc = { .name = "testsrc", .description = NULL_IF_CONFIG_SMALL("Generate test pattern."), .priv_size = sizeof(TestSourceContext), + .priv_class = &testsrc_class, .init = test_init, .query_formats = test_query_formats, @@ -450,9 +444,8 @@ static av_cold int rgbtest_init(AVFilterContext *ctx, const char *args) { TestSourceContext *test = ctx->priv; - test->class = &rgbtestsrc_class; test->fill_picture_fn = rgbtest_fill_picture; - return init_common(ctx, args); + return init_common(ctx); } static int rgbtest_query_formats(AVFilterContext *ctx) @@ -499,6 +492,7 @@ AVFilter avfilter_vsrc_rgbtestsrc = { .name = "rgbtestsrc", .description = NULL_IF_CONFIG_SMALL("Generate RGB test pattern."), .priv_size = sizeof(TestSourceContext), + .priv_class = &rgbtestsrc_class, .init = rgbtest_init, .query_formats = rgbtest_query_formats,