summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorLeo Izen <leo.izen@gmail.com>2023-02-27 10:39:33 -0500
committerLeo Izen <leo.izen@gmail.com>2023-03-05 22:37:05 -0500
commit34ed2ac2256c7c613402c10353d08ec1d7907166 (patch)
tree80ed7a4034b93a44cb361cd2a682b9058bb3e13f /video
parent22e326465251a8324c138b0570217dd68ec57184 (diff)
downloadmpv-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.c36
-rw-r--r--video/csputils.h4
-rw-r--r--video/out/placebo/utils.c9
-rw-r--r--video/zimg.c4
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;
}
}