[FFmpeg-devel] [PATCH] avfilter/vf_scale: Do not set YUV color range for RGB formats

wm4 nfxjfg at googlemail.com
Wed Mar 21 16:04:35 EET 2018


On Tue, 20 Mar 2018 23:59:46 +0100
Michael Niedermayer <michael at niedermayer.cc> wrote:

> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavfilter/vf_scale.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
> index 9f45032e85..2f6fa4791d 100644
> --- a/libavfilter/vf_scale.c
> +++ b/libavfilter/vf_scale.c
> @@ -407,6 +407,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
>      AVFilterLink *outlink = link->dst->outputs[0];
>      AVFrame *out;
>      const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(link->format);
> +    const AVPixFmtDescriptor *out_desc = av_pix_fmt_desc_get(outlink->format);
>      char buf[32];
>      int in_range;
>  
> @@ -497,7 +498,11 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
>                                       table, out_full,
>                                       brightness, contrast, saturation);
>  
> -        out->color_range = out_full ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
> +        // color_range describes YUV, it is undefined for RGB
> +        if ((out_desc->flags & AV_PIX_FMT_FLAG_RGB) && out_desc->nb_components != 1) {
> +            out->color_range = AVCOL_RANGE_UNSPECIFIED;
> +        } else
> +            out->color_range = out_full ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
>      }
>  
>      av_reduce(&out->sample_aspect_ratio.num, &out->sample_aspect_ratio.den,

Why is it not setting full range for gray? PNGs can use this for
grayscale images, so they would be affected by this too.



More information about the ffmpeg-devel mailing list