static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- int fmt, ret;
-
- for (fmt = 0; av_pix_fmt_desc_get(fmt); fmt++) {
- const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
- if (desc->flags & AV_PIX_FMT_FLAG_BITSTREAM)
- continue;
- if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
- // Not usable if there is any subsampling but the format is
- // not planar (e.g. YUYV422).
- if ((desc->log2_chroma_w || desc->log2_chroma_h) &&
- !(desc->flags & AV_PIX_FMT_FLAG_PLANAR))
- continue;
- }
- ret = ff_add_format(&formats, fmt);
- if (ret < 0)
- return ret;
- }
+ int ret;
+ ret = ff_formats_pixdesc_filter(&formats, 0, AV_PIX_FMT_FLAG_BITSTREAM | FF_PIX_FMT_FLAG_SW_FLAT_SUB);
+ if (ret < 0)
+ return ret;
return ff_set_common_formats(ctx, formats);
}