summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
Diffstat (limited to 'video')
-rw-r--r--video/csputils.c12
-rw-r--r--video/csputils.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/video/csputils.c b/video/csputils.c
index e7ea5a388b..d2793532df 100644
--- a/video/csputils.c
+++ b/video/csputils.c
@@ -41,6 +41,7 @@ char * const mp_csp_names[MP_CSP_COUNT] = {
"SMPTE-240M",
"RGB",
"XYZ",
+ "YCgCo",
};
char * const mp_csp_equalizer_names[MP_CSP_EQ_COUNT] = {
@@ -59,6 +60,7 @@ enum mp_csp avcol_spc_to_mp_csp(enum AVColorSpace colorspace)
case AVCOL_SPC_SMPTE170M: return MP_CSP_BT_601;
case AVCOL_SPC_SMPTE240M: return MP_CSP_SMPTE_240M;
case AVCOL_SPC_RGB: return MP_CSP_RGB;
+ case AVCOL_SPC_YCGCO: return MP_CSP_YCGCO;
default: return MP_CSP_AUTO;
}
}
@@ -79,6 +81,7 @@ enum AVColorSpace mp_csp_to_avcol_spc(enum mp_csp colorspace)
case MP_CSP_BT_601: return AVCOL_SPC_BT470BG;
case MP_CSP_SMPTE_240M: return AVCOL_SPC_SMPTE240M;
case MP_CSP_RGB: return AVCOL_SPC_RGB;
+ case MP_CSP_YCGCO: return AVCOL_SPC_YCGCO;
default: return AVCOL_SPC_UNSPECIFIED;
}
}
@@ -190,6 +193,15 @@ void mp_get_yuv2rgb_coeffs(struct mp_csp_params *params, float m[3][4])
levels_in = -1;
break;
}
+ case MP_CSP_YCGCO: {
+ static const float ycgco_to_rgb[3][4] = {
+ {1, -1, 1},
+ {1, 1, 0},
+ {1, -1, -1},
+ };
+ memcpy(m, ycgco_to_rgb, sizeof(ycgco_to_rgb));
+ break;
+ }
default:
abort();
};
diff --git a/video/csputils.h b/video/csputils.h
index 184e1ee76a..d11e85e38b 100644
--- a/video/csputils.h
+++ b/video/csputils.h
@@ -41,6 +41,7 @@ enum mp_csp {
MP_CSP_SMPTE_240M,
MP_CSP_RGB,
MP_CSP_XYZ,
+ MP_CSP_YCGCO,
MP_CSP_COUNT
};