[FFmpeg-devel] [PATCH] vf_colorspace: Add support for gbr color space

Ronald S. Bultje rsbultje at gmail.com
Tue Jun 6 15:02:19 EEST 2017


Hi,

On Mon, Jun 5, 2017 at 4:08 PM, Vittorio Giovara <vittorio.giovara at gmail.com
> wrote:

> Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>
> ---
>  libavfilter/vf_colorspace.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c
> index 0024505a44..0b1bc81f99 100644
> --- a/libavfilter/vf_colorspace.c
> +++ b/libavfilter/vf_colorspace.c
> @@ -183,6 +183,13 @@ static const double ycgco_matrix[3][3] =
>      {  0.5,  0,   -0.5  },
>  };
>
> +static const double gbr_matrix[3][3] =
> +{
> +    { 0,    1,   0   },
> +    { 0,   -0.5, 0.5 },
> +    { 0.5, -0.5, 0   },
> +};
> +
>  /*
>   * All constants explained in e.g. https://linuxtv.org/downloads/
> v4l-dvb-apis/ch02s06.html
>   * The older ones (bt470bg/m) are also explained in their respective ITU
> docs
> @@ -196,6 +203,7 @@ static const struct LumaCoefficients
> luma_coefficients[AVCOL_SPC_NB] = {
>      [AVCOL_SPC_BT709]      = { 0.2126, 0.7152, 0.0722 },
>      [AVCOL_SPC_SMPTE240M]  = { 0.212,  0.701,  0.087  },
>      [AVCOL_SPC_YCOCG]      = { 0.25,   0.5,    0.25   },
> +    [AVCOL_SPC_RGB]        = { 1,      1,      1      },
>      [AVCOL_SPC_BT2020_NCL] = { 0.2627, 0.6780, 0.0593 },
>      [AVCOL_SPC_BT2020_CL]  = { 0.2627, 0.6780, 0.0593 },
>  };
> @@ -222,6 +230,9 @@ static void fill_rgb2yuv_table(const struct
> LumaCoefficients *coeffs,
>      if (coeffs->cr == 0.25 && coeffs->cg == 0.5 && coeffs->cb == 0.25) {
>          memcpy(rgb2yuv, ycgco_matrix, sizeof(double) * 9);
>          return;
> +    } else if (coeffs->cr == 1 && coeffs->cg == 1 && coeffs->cb == 1) {
> +        memcpy(rgb2yuv, gbr_matrix, sizeof(double) * 9);
> +        return;


Not a big fan of these special cases, but I guess it's OK and I don't quite
know how to prevent it. So LGTM. Need me to push?

Ronald


More information about the ffmpeg-devel mailing list