summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/cfg-mplayer.h3
-rw-r--r--video/csputils.c12
-rw-r--r--video/csputils.h1
3 files changed, 15 insertions, 1 deletions
diff --git a/core/cfg-mplayer.h b/core/cfg-mplayer.h
index 65b95de7c0..7414d561bd 100644
--- a/core/cfg-mplayer.h
+++ b/core/cfg-mplayer.h
@@ -581,7 +581,8 @@ const m_option_t mplayer_opts[]={
({"auto", MP_CSP_AUTO},
{"BT.601", MP_CSP_BT_601},
{"BT.709", MP_CSP_BT_709},
- {"SMPTE-240M", MP_CSP_SMPTE_240M})),
+ {"SMPTE-240M", MP_CSP_SMPTE_240M},
+ {"YCgCo", MP_CSP_YCGCO})),
OPT_CHOICE("colormatrix-input-range", requested_input_range, 0,
({"auto", MP_CSP_LEVELS_AUTO},
{"limited", MP_CSP_LEVELS_TV},
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
};