History

split: switch to an AVOptions-based system.

Anton Khirnov committed 13 years ago

Commit 73d5d401 parent b13623e1 file · +37 −11Browse files

Showing the changes to libavfilter/split.c (1 of 1 file). Show all

Unified · Split

libavfilter/split.c+37−11
@@ -27,25 +27,24 @@ · 26 unmodified lines
2727
2828 #include "libavutil/internal.h"
2929 #include "libavutil/mem.h"
30+#include "libavutil/opt.h"
31+
3032 #include "avfilter.h"
3133 #include "audio.h"
3234 #include "internal.h"
3335 #include "video.h"
3436
37+typedef struct SplitContext {
38+ const AVClass *class;
39+ int nb_outputs;
40+} SplitContext;
41+
3542 static int split_init(AVFilterContext *ctx, const char *args)
3643 {
37− int i, nb_outputs = 2;
38−
39− if (args) {
40− nb_outputs = strtol(args, NULL, 0);
41− if (nb_outputs <= 0) {
42− av_log(ctx, AV_LOG_ERROR, "Invalid number of outputs specified: %d.\n",
43− nb_outputs);
44− return AVERROR(EINVAL);
45− }
46− }
44+ SplitContext *s = ctx->priv;
45+ int i;
4746
48− for (i = 0; i < nb_outputs; i++) {
47+ for (i = 0; i < s->nb_outputs; i++) {
4948 char name[32];
5049 AVFilterPad pad = { 0 };
5150
@@ -87,6 +86,27 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) · 35 unmodified lines
8786 return ret;
8887 }
8988
89+#define OFFSET(x) offsetof(SplitContext, x)
90+#define FLAGS AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_VIDEO_PARAM
91+static const AVOption options[] = {
92+ { "outputs", "Number of outputs", OFFSET(nb_outputs), AV_OPT_TYPE_INT, { .i64 = 2 }, 1, INT_MAX, FLAGS },
93+ { NULL },
94+};
95+
96+static const AVClass split_class = {
97+ .class_name = "split",
98+ .item_name = av_default_item_name,
99+ .option = options,
100+ .version = LIBAVUTIL_VERSION_INT,
101+};
102+
103+static const AVClass asplit_class = {
104+ .class_name = "asplit",
105+ .item_name = av_default_item_name,
106+ .option = options,
107+ .version = LIBAVUTIL_VERSION_INT,
108+};
109+
90110 static const AVFilterPad avfilter_vf_split_inputs[] = {
91111 {
92112 .name = "default",
@@ -101,6 +121,9 @@ AVFilter avfilter_vf_split = { · 8 unmodified lines
101121 .name = "split",
102122 .description = NULL_IF_CONFIG_SMALL("Pass on the input to two outputs."),
103123
124+ .priv_size = sizeof(SplitContext),
125+ .priv_class = &split_class,
126+
104127 .init = split_init,
105128 .uninit = split_uninit,
106129
@@ -122,6 +145,9 @@ AVFilter avfilter_af_asplit = { · 15 unmodified lines
122145 .name = "asplit",
123146 .description = NULL_IF_CONFIG_SMALL("Pass on the audio input to N audio outputs."),
124147
148+ .priv_size = sizeof(SplitContext),
149+ .priv_class = &asplit_class,
150+
125151 .init = split_init,
126152 .uninit = split_uninit,
127153

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t