if (!frame) /* NULL for EOF */
return av_buffersrc_add_ref(buffer_src, NULL, flags);
- switch (buffer_src->outputs[0]->type) {
- case AVMEDIA_TYPE_VIDEO:
- picref = avfilter_get_video_buffer_ref_from_frame(frame, AV_PERM_WRITE);
- break;
- case AVMEDIA_TYPE_AUDIO:
- picref = avfilter_get_audio_buffer_ref_from_frame(frame, AV_PERM_WRITE);
- break;
- default:
- return AVERROR(ENOSYS);
- }
+ picref = avfilter_get_buffer_ref_from_frame(buffer_src->outputs[0]->type,
+ frame, AV_PERM_WRITE);
if (!picref)
return AVERROR(ENOMEM);
ret = av_buffersrc_add_ref(buffer_src, picref, flags);
if (equal && (!colon || equal < colon)) {
av_opt_set_defaults(c);
ret = av_set_options_string(c, args, "=", ":");
- if (ret < 0) {
- av_log(ctx, AV_LOG_ERROR, "Error parsing options string: %s\n", args);
+ if (ret < 0)
goto fail;
- }
} else {
if ((n = sscanf(args, "%d:%d:%127[^:]:%d:%d:%d:%d:%255c", &c->w, &c->h, pix_fmt_str,
&c->time_base.num, &c->time_base.den,
s->class = &abuffer_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);
+ if ((ret = av_set_options_string(s, args, "=", ":")) < 0)
goto fail;
- }
s->sample_fmt = av_get_sample_fmt(s->sample_fmt_str);
if (s->sample_fmt == AV_SAMPLE_FMT_NONE) {
switch (link->type) {
case AVMEDIA_TYPE_VIDEO:
- ff_start_frame(link, avfilter_ref_buffer(buf, ~0));
- ff_draw_slice(link, 0, link->h, 1);
- ff_end_frame(link);
+ if ((ret = ff_start_frame(link, buf)) < 0 ||
+ (ret = ff_draw_slice(link, 0, link->h, 1)) < 0 ||
+ (ret = ff_end_frame(link)) < 0)
+ return ret;
break;
case AVMEDIA_TYPE_AUDIO:
- ret = ff_filter_samples(link, avfilter_ref_buffer(buf, ~0));
+ ret = ff_filter_samples(link, buf);
break;
default:
+ avfilter_unref_bufferp(&buf);
return AVERROR(EINVAL);
}
- avfilter_unref_buffer(buf);
-
return ret;
}
.init = init_video,
.uninit = uninit,
- .inputs = (AVFilterPad[]) {{ .name = NULL }},
- .outputs = (AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
- .request_frame = request_frame,
- .poll_frame = poll_frame,
- .config_props = config_props, },
- { .name = NULL}},
+ .inputs = (const AVFilterPad[]) {{ .name = NULL }},
+ .outputs = (const AVFilterPad[]) {{ .name = "default",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .request_frame = request_frame,
+ .poll_frame = poll_frame,
+ .config_props = config_props, },
+ { .name = NULL}},
};
AVFilter avfilter_asrc_abuffer = {
.init = init_audio,
.uninit = uninit,
- .inputs = (AVFilterPad[]) {{ .name = NULL }},
- .outputs = (AVFilterPad[]) {{ .name = "default",
- .type = AVMEDIA_TYPE_AUDIO,
- .request_frame = request_frame,
- .poll_frame = poll_frame,
- .config_props = config_props, },
- { .name = NULL}},
+ .inputs = (const AVFilterPad[]) {{ .name = NULL }},
+ .outputs = (const AVFilterPad[]) {{ .name = "default",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .request_frame = request_frame,
+ .poll_frame = poll_frame,
+ .config_props = config_props, },
+ { .name = NULL}},
};