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.
This commit is contained in:
Leo Izen 2023-02-27 10:39:33 -05:00
parent 22e3264652
commit 34ed2ac225
4 changed files with 53 additions and 0 deletions

View File

@ -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}};
}

View File

@ -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
};

View File

@ -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;
}

View File

@ -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;
}
}