static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- int fmt;
-
- for (fmt = 0; av_pix_fmt_desc_get(fmt); fmt++) {
- const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
- int ret;
- if (desc->flags & AV_PIX_FMT_FLAG_HWACCEL)
- continue;
- if ((ret = ff_add_format(&formats, fmt)) < 0)
- return ret;
- }
+ int ret;
+ ret = ff_formats_pixdesc_filter(&formats, 0,
+ AV_PIX_FMT_FLAG_HWACCEL);
+ if (ret < 0)
+ return ret;
return ff_set_common_formats(ctx, formats);
}
{
AVFilterLink *outlink = inlink->dst->outputs[0];
AVFrame *out = ff_get_video_buffer(outlink, in->width, in->height);
+ int ret;
if (!out) {
- av_frame_free(&in);
- return AVERROR(ENOMEM);
+ ret = AVERROR(ENOMEM);
+ goto fail;
}
- av_frame_copy_props(out, in);
- av_frame_copy(out, in);
+
+ ret = av_frame_copy_props(out, in);
+ if (ret < 0)
+ goto fail;
+ ret = av_frame_copy(out, in);
+ if (ret < 0)
+ goto fail;
av_frame_free(&in);
return ff_filter_frame(outlink, out);
+fail:
+ av_frame_free(&in);
+ av_frame_free(&out);
+ return ret;
}
static const AVFilterPad avfilter_vf_copy_inputs[] = {