From 27d8f6b660d7d72520551b8f3ecb2b2725593f70 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Fri, 8 Jan 2010 23:48:32 +0000 Subject: [PATCH] Make the scale filter set in the input and output links only the respective pixel formats effectively supported by libswscale. Originally committed as revision 21105 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/vf_scale.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index 381d572ff9..6ccdde26c0 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -69,13 +69,27 @@ static av_cold void uninit(AVFilterContext *ctx) static int query_formats(AVFilterContext *ctx) { AVFilterFormats *formats; + enum PixelFormat pix_fmt; + int ret; if (ctx->inputs[0]) { - formats = avfilter_all_colorspaces(); + formats = NULL; + for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++) + if ( sws_isSupportedInput(pix_fmt) + && (ret = avfilter_add_colorspace(&formats, pix_fmt)) < 0) { + avfilter_formats_unref(&formats); + return ret; + } avfilter_formats_ref(formats, &ctx->inputs[0]->out_formats); } if (ctx->outputs[0]) { - formats = avfilter_all_colorspaces(); + formats = NULL; + for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++) + if ( sws_isSupportedOutput(pix_fmt) + && (ret = avfilter_add_colorspace(&formats, pix_fmt)) < 0) { + avfilter_formats_unref(&formats); + return ret; + } avfilter_formats_ref(formats, &ctx->outputs[0]->in_formats); }