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

Michael Niedermayer michael at niedermayer.cc
Tue Mar 27 00:44:44 EEST 2018


On Mon, Mar 26, 2018 at 08:34:06AM +0200, Paul B Mahol wrote:
> On 3/26/18, Michael Niedermayer <michael at niedermayer.cc> wrote:
> > On Wed, Mar 21, 2018 at 09:18:21AM +0100, Paul B Mahol wrote:
> >> On 3/20/18, 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,
> >> > --
> >> > 2.16.2
> >> >
> >> > _______________________________________________
> >> > ffmpeg-devel mailing list
> >> > ffmpeg-devel at ffmpeg.org
> >> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >> >
> >>
> >> This is not optimal, as full color_range should remain full when not
> >> changed.
> >
> > there is no range for rgb formats. The range is specific to YUV based
> > formats.
> > Thats, if iam guessing correctly what you meant. You did not really say
> > which case you meant here. So maybe there is an issue and i misunderstand
> > what you refer to
> 
> Maybe not for swscale here but does exist otherwise.

It has no meaning for RGB. There is no limited range RGB
also, the API defines it only for YUV. So if it had meaning for RGB its not defined
what meaning that would be. The ranges for luma and chroma differ so its not
natural or obvious how to extend it to RGB.
Iam also not aware of any specification that defines limited range RGB

also please be a little more verbose about what you speak of. That should
speed up resolving this

/**
 * MPEG vs JPEG YUV range.
 */
enum AVColorRange {
    AVCOL_RANGE_UNSPECIFIED = 0,
    AVCOL_RANGE_MPEG        = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
    AVCOL_RANGE_JPEG        = 2, ///< the normal     2^n-1   "JPEG" YUV ranges
    AVCOL_RANGE_NB               ///< Not part of ABI


[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180326/f9c697c3/attachment.sig>


More information about the ffmpeg-devel mailing list