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

Vittorio Giovara git at videolan.org
Tue Jun 6 18:29:27 EEST 2017


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Mon Jun  5 16:05:11 2017 -0400| [d9909b11d9b044e023daefb75de219d643af4d7f] | committer: Vittorio Giovara

vf_colorspace: Add support for gbr color space

Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d9909b11d9b044e023daefb75de219d643af4d7f
---

 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;
     }
 
     rgb2yuv[0][0] = coeffs->cr;
@@ -1074,6 +1085,7 @@ static const AVOption colorspace_options[] = {
     ENUM("smpte170m",   AVCOL_SPC_SMPTE170M,   "csp"),
     ENUM("smpte240m",   AVCOL_SPC_SMPTE240M,   "csp"),
     ENUM("ycgco",       AVCOL_SPC_YCGCO,       "csp"),
+    ENUM("gbr",         AVCOL_SPC_RGB,         "csp"),
     ENUM("bt2020ncl",   AVCOL_SPC_BT2020_NCL,  "csp"),
 
     { "range",      "Output color range",



More information about the ffmpeg-cvslog mailing list