vo_gpu_next: move get_best_prim_container to csputils
Used in next commit
This commit is contained in:
1 parent
3d4170b81b
commit
5a45669663
3 files changed
+33
-31
No files matched your search
@@ -545,3 +545,33 @@ void mp_map_fixp_color(struct pl_transform3x3 *matrix, int ibits, int in[3],
|
||||
out[i] = av_clip(ival, 0, (1 << obits) - 1);
|
||||
}
|
||||
}
|
||||
|
||||
enum pl_color_primaries mp_get_best_prim_container(const struct pl_raw_primaries *gamut)
|
||||
{
|
||||
enum pl_color_primaries container = PL_COLOR_PRIM_UNKNOWN;
|
||||
|
||||
if (!pl_primaries_valid(gamut))
|
||||
return container;
|
||||
|
||||
const struct pl_raw_primaries *best = NULL;
|
||||
for (enum pl_color_primaries prim = 1; prim < PL_COLOR_PRIM_COUNT; prim++) {
|
||||
const struct pl_raw_primaries *raw = pl_raw_primaries_get(prim);
|
||||
if (pl_raw_primaries_similar(raw, gamut)) {
|
||||
container = prim;
|
||||
best = raw;
|
||||
break;
|
||||
}
|
||||
|
||||
if (pl_primaries_superset(raw, gamut) &&
|
||||
(!best || pl_primaries_superset(best, raw)))
|
||||
{
|
||||
container = prim;
|
||||
best = raw;
|
||||
}
|
||||
}
|
||||
|
||||
if (!best)
|
||||
container = PL_COLOR_PRIM_BT_2020;
|
||||
|
||||
return container;
|
||||
}
|
||||
@@ -122,4 +122,6 @@ void mp_get_csp_matrix(struct mp_csp_params *params, struct pl_transform3x3 *out
|
||||
void mp_map_fixp_color(struct pl_transform3x3 *matrix, int ibits, int in[3],
|
||||
int obits, int out[3]);
|
||||
|
||||
enum pl_color_primaries mp_get_best_prim_container(const struct pl_raw_primaries *gamut);
|
||||
|
||||
#endif /* MPLAYER_CSPUTILS_H */
|
||||
+1
-31
@@ -979,36 +979,6 @@ static void update_tm_viz(struct pl_color_map_params *params,
|
||||
params->visualize_hue = M_PI / 4.0;
|
||||
}
|
||||
|
||||
static enum pl_color_primaries get_best_prim_container(const struct pl_raw_primaries *gamut)
|
||||
{
|
||||
enum pl_color_primaries container = PL_COLOR_PRIM_UNKNOWN;
|
||||
|
||||
if (!pl_primaries_valid(gamut))
|
||||
return container;
|
||||
|
||||
const struct pl_raw_primaries *best = NULL;
|
||||
for (enum pl_color_primaries prim = 1; prim < PL_COLOR_PRIM_COUNT; prim++) {
|
||||
const struct pl_raw_primaries *raw = pl_raw_primaries_get(prim);
|
||||
if (pl_raw_primaries_similar(raw, gamut)) {
|
||||
container = prim;
|
||||
best = raw;
|
||||
break;
|
||||
}
|
||||
|
||||
if (pl_primaries_superset(raw, gamut) &&
|
||||
(!best || pl_primaries_superset(best, raw)))
|
||||
{
|
||||
container = prim;
|
||||
best = raw;
|
||||
}
|
||||
}
|
||||
|
||||
if (!best)
|
||||
container = PL_COLOR_PRIM_BT_2020;
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
static void update_hook_opts_dynamic(struct priv *p, const struct pl_hook *hook,
|
||||
const struct mp_image *mpi);
|
||||
|
||||
@@ -1101,7 +1071,7 @@ static bool draw_frame(struct vo *vo, struct vo_frame *frame)
|
||||
if (sw->fns->target_csp)
|
||||
target_csp = sw->fns->target_csp(sw);
|
||||
if (target_csp.primaries == PL_COLOR_PRIM_UNKNOWN)
|
||||
target_csp.primaries = get_best_prim_container(&target_csp.hdr.prim);
|
||||
target_csp.primaries = mp_get_best_prim_container(&target_csp.hdr.prim);
|
||||
if (!pl_color_transfer_is_hdr(target_csp.transfer)) {
|
||||
// limit min_luma to 1000:1 contrast ratio in SDR mode
|
||||
if (target_csp.hdr.min_luma > PL_COLOR_SDR_WHITE / PL_COLOR_SDR_CONTRAST)
|
||||
|
||||
Reference in new issue
Block a user