static av_cold int init(AVFilterContext *ctx) { AudioFIRContext *s = ctx->priv; AVFilterPad pad, vpad; int ret; pad = (AVFilterPad){ .name = av_strdup("default"), .type = AVMEDIA_TYPE_AUDIO, .config_props = config_output, }; if (!pad.name) return AVERROR(ENOMEM); if (s->response) { vpad = (AVFilterPad){ .name = av_strdup("filter_response"), .type = AVMEDIA_TYPE_VIDEO, .config_props = config_video, }; if (!vpad.name) return AVERROR(ENOMEM); } ret = ff_insert_outpad(ctx, 0, &pad); if (ret < 0) { av_freep(&pad.name); return ret; } if (s->response) { ret = ff_insert_outpad(ctx, 1, &vpad); if (ret < 0) { av_freep(&vpad.name); return ret; } } s->fdsp = avpriv_float_dsp_alloc(0); if (!s->fdsp) return AVERROR(ENOMEM); ff_afir_init(&s->afirdsp); return 0; } static const AVFilterPad afir_inputs[] = { { .name = "main", .type = AVMEDIA_TYPE_AUDIO, },{ .name = "ir",
static int parse_definition(AVFilterContext *ctx, int nb_pads, void *filter_frame, int is_audio) { const int is_input = !!filter_frame; const char *padtype = is_input ? "in" : "out"; int i = 0, ret = 0; for (i = 0; i < nb_pads; i++) { AVFilterPad pad = { 0 }; pad.type = is_audio ? AVMEDIA_TYPE_AUDIO : AVMEDIA_TYPE_VIDEO; pad.name = av_asprintf("%sput%d", padtype, i); if (!pad.name) return AVERROR(ENOMEM); av_log(ctx, AV_LOG_DEBUG, "Add %s pad %s\n", padtype, pad.name); if (is_input) { pad.filter_frame = filter_frame; ret = ff_insert_inpad(ctx, i, &pad); } else { pad.config_props = config_output; pad.request_frame = request_frame; ret = ff_insert_outpad(ctx, i, &pad); } if (ret < 0) { av_freep(&pad.name); return ret; } } return 0; }
static av_cold int init(AVFilterContext *ctx) { ChannelSplitContext *s = ctx->priv; int nb_channels; int ret = 0, i; if (!(s->channel_layout = av_get_channel_layout(s->channel_layout_str))) { av_log(ctx, AV_LOG_ERROR, "Error parsing channel layout '%s'.\n", s->channel_layout_str); ret = AVERROR(EINVAL); goto fail; } nb_channels = av_get_channel_layout_nb_channels(s->channel_layout); for (i = 0; i < nb_channels; i++) { uint64_t channel = av_channel_layout_extract_channel(s->channel_layout, i); AVFilterPad pad = { 0 }; pad.type = AVMEDIA_TYPE_AUDIO; pad.name = av_get_channel_name(channel); ff_insert_outpad(ctx, i, &pad); } fail: return ret; }
static int split_init(AVFilterContext *ctx, const char *args) { int i, nb_outputs = 2; if (args) { nb_outputs = strtol(args, NULL, 0); if (nb_outputs <= 0) { av_log(ctx, AV_LOG_ERROR, "Invalid number of outputs specified: %d.\n", nb_outputs); return AVERROR(EINVAL); } } for (i = 0; i < nb_outputs; i++) { char name[32]; AVFilterPad pad = { 0 }; snprintf(name, sizeof(name), "output%d", i); pad.type = ctx->filter->inputs[0].type; pad.name = av_strdup(name); ff_insert_outpad(ctx, i, &pad); } return 0; }
static av_cold int init(AVFilterContext *ctx) { SelectContext *select = ctx->priv; int i, ret; if ((ret = av_expr_parse(&select->expr, select->expr_str, var_names, NULL, NULL, NULL, NULL, 0, ctx)) < 0) { av_log(ctx, AV_LOG_ERROR, "Error while parsing expression '%s'\n", select->expr_str); return ret; } select->do_scene_detect = !!strstr(select->expr_str, "scene"); for (i = 0; i < select->nb_outputs; i++) { AVFilterPad pad = { 0 }; pad.name = av_asprintf("output%d", i); if (!pad.name) return AVERROR(ENOMEM); pad.type = ctx->filter->inputs[0].type; pad.request_frame = request_frame; ff_insert_outpad(ctx, i, &pad); } return 0; }
static av_cold int split_init(AVFilterContext *ctx) { SplitContext *s = ctx->priv; int i; for (i = 0; i < s->nb_outputs; i++) { char name[32]; AVFilterPad pad = { 0 }; snprintf(name, sizeof(name), "output%d", i); pad.type = ctx->filter->inputs[0].type; pad.name = av_strdup(name); ff_insert_outpad(ctx, i, &pad); } return 0; }
static av_cold int split_init(AVFilterContext *ctx) { SplitContext *s = ctx->priv; int i, ret; for (i = 0; i < s->nb_outputs; i++) { char name[32]; AVFilterPad pad = { 0 }; snprintf(name, sizeof(name), "output%d", i); pad.type = ctx->filter->inputs[0].type; pad.name = av_strdup(name); if (!pad.name) return AVERROR(ENOMEM); if ((ret = ff_insert_outpad(ctx, i, &pad)) < 0) { av_freep(&pad.name); return ret; } } return 0; }