| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * (C) COPYRIGHT 2019 ARM Limited. All rights reserved. |
| * Author: James.Qian.Wang <james.qian.wang@arm.com> |
| * |
| */ |
| |
| #include "komeda_color_mgmt.h" |
| |
| /* 10bit precision YUV2RGB matrix */ |
| static const s32 yuv2rgb_bt601_narrow[KOMEDA_N_YUV2RGB_COEFFS] = { |
| 1192, 0, 1634, |
| 1192, -401, -832, |
| 1192, 2066, 0, |
| 64, 512, 512 |
| }; |
| |
| static const s32 yuv2rgb_bt601_wide[KOMEDA_N_YUV2RGB_COEFFS] = { |
| 1024, 0, 1436, |
| 1024, -352, -731, |
| 1024, 1815, 0, |
| 0, 512, 512 |
| }; |
| |
| static const s32 yuv2rgb_bt709_narrow[KOMEDA_N_YUV2RGB_COEFFS] = { |
| 1192, 0, 1836, |
| 1192, -218, -546, |
| 1192, 2163, 0, |
| 64, 512, 512 |
| }; |
| |
| static const s32 yuv2rgb_bt709_wide[KOMEDA_N_YUV2RGB_COEFFS] = { |
| 1024, 0, 1613, |
| 1024, -192, -479, |
| 1024, 1900, 0, |
| 0, 512, 512 |
| }; |
| |
| static const s32 yuv2rgb_bt2020[KOMEDA_N_YUV2RGB_COEFFS] = { |
| 1024, 0, 1476, |
| 1024, -165, -572, |
| 1024, 1884, 0, |
| 0, 512, 512 |
| }; |
| |
| const s32 *komeda_select_yuv2rgb_coeffs(u32 color_encoding, u32 color_range) |
| { |
| bool narrow = color_range == DRM_COLOR_YCBCR_LIMITED_RANGE; |
| const s32 *coeffs; |
| |
| switch (color_encoding) { |
| case DRM_COLOR_YCBCR_BT709: |
| coeffs = narrow ? yuv2rgb_bt709_narrow : yuv2rgb_bt709_wide; |
| break; |
| case DRM_COLOR_YCBCR_BT601: |
| coeffs = narrow ? yuv2rgb_bt601_narrow : yuv2rgb_bt601_wide; |
| break; |
| case DRM_COLOR_YCBCR_BT2020: |
| coeffs = yuv2rgb_bt2020; |
| break; |
| default: |
| coeffs = NULL; |
| break; |
| } |
| |
| return coeffs; |
| } |