diff options
author | Leo Izen <leo.izen@gmail.com> | 2023-02-27 10:39:33 -0500 |
---|---|---|
committer | Leo Izen <leo.izen@gmail.com> | 2023-03-05 22:37:05 -0500 |
commit | 34ed2ac2256c7c613402c10353d08ec1d7907166 (patch) | |
tree | 80ed7a4034b93a44cb361cd2a682b9058bb3e13f /video | |
parent | 22e326465251a8324c138b0570217dd68ec57184 (diff) | |
download | mpv-34ed2ac2256c7c613402c10353d08ec1d7907166.tar.bz2 mpv-34ed2ac2256c7c613402c10353d08ec1d7907166.tar.xz |
video: add missing libplacebo colorspace enums
Add some missing libplacebo primaries and transfer enums to mpv's enum
constant tables, and update the functions that convert between the two.
Diffstat (limited to 'video')
-rw-r--r-- | video/csputils.c | 36 | ||||
-rw-r--r-- | video/csputils.h | 4 | ||||
-rw-r--r-- | video/out/placebo/utils.c | 9 | ||||
-rw-r--r-- | video/zimg.c | 4 |
4 files changed, 53 insertions, 0 deletions
diff --git a/video/csputils.c b/video/csputils.c index aaa32614b7..34fc4ead42 100644 --- a/video/csputils.c +++ b/video/csputils.c @@ -67,6 +67,10 @@ const struct m_opt_choice_alternatives mp_csp_prim_names[] = { {"display-p3", MP_CSP_PRIM_DISPLAY_P3}, {"v-gamut", MP_CSP_PRIM_V_GAMUT}, {"s-gamut", MP_CSP_PRIM_S_GAMUT}, + {"ebu3213", MP_CSP_PRIM_EBU_3213}, + {"film-c", MP_CSP_PRIM_FILM_C}, + {"aces-ap0", MP_CSP_PRIM_ACES_AP0}, + {"aces-ap1", MP_CSP_PRIM_ACES_AP1}, {0} }; @@ -479,6 +483,38 @@ struct mp_csp_primaries mp_get_csp_primaries(enum mp_csp_prim spc) .blue = {0.100, -0.05}, .white = d65 }; + // from EBU Tech. 3213-E + case MP_CSP_PRIM_EBU_3213: + return (struct mp_csp_primaries) { + .red = {0.630, 0.340}, + .green = {0.295, 0.605}, + .blue = {0.155, 0.077}, + .white = d65 + }; + // From H.273, traditional film with Illuminant C + case MP_CSP_PRIM_FILM_C: + return (struct mp_csp_primaries) { + .red = {0.681, 0.319}, + .green = {0.243, 0.692}, + .blue = {0.145, 0.049}, + .white = c + }; + // From libplacebo source code + case MP_CSP_PRIM_ACES_AP0: + return (struct mp_csp_primaries) { + .red = {0.7347, 0.2653}, + .green = {0.0000, 1.0000}, + .blue = {0.0001, -0.0770}, + .white = {0.32168, 0.33767}, + }; + // From libplacebo source code + case MP_CSP_PRIM_ACES_AP1: + return (struct mp_csp_primaries) { + .red = {0.713, 0.293}, + .green = {0.165, 0.830}, + .blue = {0.128, 0.044}, + .white = {0.32168, 0.33767}, + }; default: return (struct mp_csp_primaries) {{0}}; } diff --git a/video/csputils.h b/video/csputils.h index 69928b29f2..a1459e9512 100644 --- a/video/csputils.h +++ b/video/csputils.h @@ -67,6 +67,10 @@ enum mp_csp_prim { MP_CSP_PRIM_DISPLAY_P3, MP_CSP_PRIM_V_GAMUT, MP_CSP_PRIM_S_GAMUT, + MP_CSP_PRIM_EBU_3213, + MP_CSP_PRIM_FILM_C, + MP_CSP_PRIM_ACES_AP0, + MP_CSP_PRIM_ACES_AP1, MP_CSP_PRIM_COUNT }; diff --git a/video/out/placebo/utils.c b/video/out/placebo/utils.c index 03a2fdd005..961ffc0b97 100644 --- a/video/out/placebo/utils.c +++ b/video/out/placebo/utils.c @@ -85,6 +85,15 @@ enum pl_color_primaries mp_prim_to_pl(enum mp_csp_prim prim) case MP_CSP_PRIM_DISPLAY_P3: return PL_COLOR_PRIM_DISPLAY_P3; case MP_CSP_PRIM_V_GAMUT: return PL_COLOR_PRIM_V_GAMUT; case MP_CSP_PRIM_S_GAMUT: return PL_COLOR_PRIM_S_GAMUT; + case MP_CSP_PRIM_EBU_3213: return PL_COLOR_PRIM_EBU_3213; + case MP_CSP_PRIM_FILM_C: return PL_COLOR_PRIM_FILM_C; +#if PL_API_VER >= 230 + case MP_CSP_PRIM_ACES_AP0: return PL_COLOR_PRIM_ACES_AP0; + case MP_CSP_PRIM_ACES_AP1: return PL_COLOR_PRIM_ACES_AP1; +#else + case MP_CSP_PRIM_ACES_AP0: + case MP_CSP_PRIM_ACES_AP1: return PL_COLOR_PRIM_UNKNOWN; +#endif case MP_CSP_PRIM_COUNT: return PL_COLOR_PRIM_COUNT; } diff --git a/video/zimg.c b/video/zimg.c index 9374cd9f95..f0a945f494 100644 --- a/video/zimg.c +++ b/video/zimg.c @@ -181,12 +181,16 @@ static zimg_color_primaries_e mp_to_z_prim(enum mp_csp_prim prim) case MP_CSP_PRIM_BT_470M: return ZIMG_PRIMARIES_BT470_M; case MP_CSP_PRIM_DCI_P3: return ZIMG_PRIMARIES_ST431_2; case MP_CSP_PRIM_DISPLAY_P3:return ZIMG_PRIMARIES_ST432_1; + case MP_CSP_PRIM_EBU_3213: return ZIMG_PRIMARIES_EBU3213_E; + case MP_CSP_PRIM_FILM_C: return ZIMG_PRIMARIES_FILM; case MP_CSP_PRIM_CIE_1931: case MP_CSP_PRIM_APPLE: // ? case MP_CSP_PRIM_ADOBE: case MP_CSP_PRIM_PRO_PHOTO: case MP_CSP_PRIM_V_GAMUT: case MP_CSP_PRIM_S_GAMUT: // ? + case MP_CSP_PRIM_ACES_AP0: + case MP_CSP_PRIM_ACES_AP1: default: return ZIMG_PRIMARIES_BT709; } } |