#define OFFSET(x) offsetof(ChannelMapContext, x)
#define A AV_OPT_FLAG_AUDIO_PARAM
+#define F AV_OPT_FLAG_FILTERING_PARAM
static const AVOption options[] = {
{ "map", "A comma-separated list of input channel numbers in output order.",
- OFFSET(mapping_str), AV_OPT_TYPE_STRING, .flags = A },
+ OFFSET(mapping_str), AV_OPT_TYPE_STRING, .flags = A|F },
{ "channel_layout", "Output channel layout.",
- OFFSET(channel_layout_str), AV_OPT_TYPE_STRING, .flags = A },
+ OFFSET(channel_layout_str), AV_OPT_TYPE_STRING, .flags = A|F },
{ NULL },
};
ChannelMapContext *s = ctx->priv;
int ret;
char *mapping;
- enum mode;
int map_entries = 0;
char buf[256];
enum MappingMode mode;
if (buf->extended_data == buf->data) {
buf->extended_data = new_extended_data;
} else {
- buf->extended_data = new_extended_data;
av_free(buf->extended_data);
+ buf->extended_data = new_extended_data;
}
} else if (buf->extended_data != buf->data) {
av_free(buf->extended_data);
return err;
}
+static const AVFilterPad avfilter_af_channelmap_inputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .min_perms = AV_PERM_READ | AV_PERM_WRITE,
+ .filter_samples = channelmap_filter_samples,
+ .config_props = channelmap_config_input
+ },
+ { NULL }
+};
+
+static const AVFilterPad avfilter_af_channelmap_outputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_AUDIO
+ },
+ { NULL }
+};
+
AVFilter avfilter_af_channelmap = {
.name = "channelmap",
.description = NULL_IF_CONFIG_SMALL("Remap audio channels."),
.query_formats = channelmap_query_formats,
.priv_size = sizeof(ChannelMapContext),
- .inputs = (const AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_AUDIO,
- .filter_samples = channelmap_filter_samples,
- .config_props = channelmap_config_input },
- { .name = NULL }},
- .outputs = (const AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_AUDIO },
- { .name = NULL }},
+ .inputs = avfilter_af_channelmap_inputs,
+ .outputs = avfilter_af_channelmap_outputs,
+ .priv_class = &channelmap_class,
};