diff options
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/vl/vl_csc.c | 19 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_csc.h | 3 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/vl/vl_csc.c b/src/gallium/auxiliary/vl/vl_csc.c index 21da95f3ceb..56e662157ef 100644 --- a/src/gallium/auxiliary/vl/vl_csc.c +++ b/src/gallium/auxiliary/vl/vl_csc.c @@ -147,6 +147,22 @@ static const float bt_709_full[16] = 0.0f, 0.0f, 0.0f, 1.0f }; +static const float smpte240m[16] = +{ + 1.0f, 0.0f, 1.582f, 0.0f, + 1.0f, -0.228f, -0.478f, 0.0f, + 1.0f, 1.833f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f +}; + +static const float smpte240m_full[16] = +{ + 1.164f, 0.0f, 1.794f, 0.0f, + 1.164f, -0.258f, -0.543f, 0.0f, + 1.164f, 2.079f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f +}; + static const float identity[16] = { 1.0f, 0.0f, 0.0f, 0.0f, @@ -188,6 +204,9 @@ void vl_csc_get_matrix(enum VL_CSC_COLOR_STANDARD cs, case VL_CSC_COLOR_STANDARD_BT_709: cstd = full_range ? &bt_709_full[0] : &bt_709[0]; break; + case VL_CSC_COLOR_STANDARD_SMPTE_240M: + cstd = full_range ? &smpte240m_full[0] : &smpte240m[0]; + break; case VL_CSC_COLOR_STANDARD_IDENTITY: default: assert(cs == VL_CSC_COLOR_STANDARD_IDENTITY); diff --git a/src/gallium/auxiliary/vl/vl_csc.h b/src/gallium/auxiliary/vl/vl_csc.h index a6fb1fdba51..7a31dd4eb26 100644 --- a/src/gallium/auxiliary/vl/vl_csc.h +++ b/src/gallium/auxiliary/vl/vl_csc.h @@ -42,7 +42,8 @@ enum VL_CSC_COLOR_STANDARD { VL_CSC_COLOR_STANDARD_IDENTITY, VL_CSC_COLOR_STANDARD_BT_601, - VL_CSC_COLOR_STANDARD_BT_709 + VL_CSC_COLOR_STANDARD_BT_709, + VL_CSC_COLOR_STANDARD_SMPTE_240M }; extern const struct vl_procamp vl_default_procamp; |