summaryrefslogtreecommitdiffstats
path: root/video/zimg.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:13:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 01:13:14 +0000
commit60e8a3d404f0640fa5a3f834eae54b4f1fb9127d (patch)
tree1da89a218d0ecf010c67a87cb2f625c4cb18e7d7 /video/zimg.c
parentAdding upstream version 0.37.0. (diff)
downloadmpv-upstream/0.38.0.tar.xz
mpv-upstream/0.38.0.zip
Adding upstream version 0.38.0.upstream/0.38.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--video/zimg.c119
1 files changed, 61 insertions, 58 deletions
diff --git a/video/zimg.c b/video/zimg.c
index 5ff300c..907e81d 100644
--- a/video/zimg.c
+++ b/video/zimg.c
@@ -121,76 +121,79 @@ static void mp_zimg_update_from_cmdline(struct mp_zimg_context *ctx)
ctx->opts = *opts;
}
-static zimg_chroma_location_e mp_to_z_chroma(enum mp_chroma_location cl)
+static zimg_chroma_location_e pl_to_z_chroma(enum pl_chroma_location cl)
{
switch (cl) {
- case MP_CHROMA_TOPLEFT: return ZIMG_CHROMA_TOP_LEFT;
- case MP_CHROMA_LEFT: return ZIMG_CHROMA_LEFT;
- case MP_CHROMA_CENTER: return ZIMG_CHROMA_CENTER;
- default: return ZIMG_CHROMA_LEFT;
+ case PL_CHROMA_LEFT: return ZIMG_CHROMA_LEFT;
+ case PL_CHROMA_CENTER: return ZIMG_CHROMA_CENTER;
+ case PL_CHROMA_TOP_LEFT: return ZIMG_CHROMA_TOP_LEFT;
+ case PL_CHROMA_TOP_CENTER: return ZIMG_CHROMA_TOP;
+ case PL_CHROMA_BOTTOM_LEFT: return ZIMG_CHROMA_BOTTOM_LEFT;
+ case PL_CHROMA_BOTTOM_CENTER: return ZIMG_CHROMA_BOTTOM;
+ default: return ZIMG_CHROMA_LEFT;
}
}
-static zimg_matrix_coefficients_e mp_to_z_matrix(enum mp_csp csp)
+static zimg_matrix_coefficients_e pl_to_z_matrix(enum pl_color_system csp)
{
switch (csp) {
- case MP_CSP_BT_601: return ZIMG_MATRIX_BT470_BG;
- case MP_CSP_BT_709: return ZIMG_MATRIX_BT709;
- case MP_CSP_SMPTE_240M: return ZIMG_MATRIX_ST240_M;
- case MP_CSP_BT_2020_NC: return ZIMG_MATRIX_BT2020_NCL;
- case MP_CSP_BT_2020_C: return ZIMG_MATRIX_BT2020_CL;
- case MP_CSP_RGB: return ZIMG_MATRIX_RGB;
- case MP_CSP_XYZ: return ZIMG_MATRIX_RGB;
- case MP_CSP_YCGCO: return ZIMG_MATRIX_YCGCO;
+ case PL_COLOR_SYSTEM_BT_601: return ZIMG_MATRIX_BT470_BG;
+ case PL_COLOR_SYSTEM_BT_709: return ZIMG_MATRIX_BT709;
+ case PL_COLOR_SYSTEM_SMPTE_240M: return ZIMG_MATRIX_ST240_M;
+ case PL_COLOR_SYSTEM_BT_2020_NC: return ZIMG_MATRIX_BT2020_NCL;
+ case PL_COLOR_SYSTEM_BT_2020_C: return ZIMG_MATRIX_BT2020_CL;
+ case PL_COLOR_SYSTEM_RGB: return ZIMG_MATRIX_RGB;
+ case PL_COLOR_SYSTEM_XYZ: return ZIMG_MATRIX_RGB;
+ case PL_COLOR_SYSTEM_YCGCO: return ZIMG_MATRIX_YCGCO;
default: return ZIMG_MATRIX_BT709;
}
}
-static zimg_transfer_characteristics_e mp_to_z_trc(enum mp_csp_trc trc)
+static zimg_transfer_characteristics_e pl_to_z_trc(enum pl_color_transfer trc)
{
switch (trc) {
- case MP_CSP_TRC_BT_1886: return ZIMG_TRANSFER_BT709;
- case MP_CSP_TRC_SRGB: return ZIMG_TRANSFER_IEC_61966_2_1;
- case MP_CSP_TRC_LINEAR: return ZIMG_TRANSFER_LINEAR;
- case MP_CSP_TRC_GAMMA22: return ZIMG_TRANSFER_BT470_M;
- case MP_CSP_TRC_GAMMA28: return ZIMG_TRANSFER_BT470_BG;
- case MP_CSP_TRC_PQ: return ZIMG_TRANSFER_ST2084;
- case MP_CSP_TRC_HLG: return ZIMG_TRANSFER_ARIB_B67;
+ case PL_COLOR_TRC_BT_1886: return ZIMG_TRANSFER_BT709;
+ case PL_COLOR_TRC_SRGB: return ZIMG_TRANSFER_IEC_61966_2_1;
+ case PL_COLOR_TRC_LINEAR: return ZIMG_TRANSFER_LINEAR;
+ case PL_COLOR_TRC_GAMMA22: return ZIMG_TRANSFER_BT470_M;
+ case PL_COLOR_TRC_GAMMA28: return ZIMG_TRANSFER_BT470_BG;
+ case PL_COLOR_TRC_PQ: return ZIMG_TRANSFER_ST2084;
+ case PL_COLOR_TRC_HLG: return ZIMG_TRANSFER_ARIB_B67;
#if HAVE_ZIMG_ST428
- case MP_CSP_TRC_ST428: return ZIMG_TRANSFER_ST428;
+ case PL_COLOR_TRC_ST428: return ZIMG_TRANSFER_ST428;
#endif
- case MP_CSP_TRC_GAMMA18: // ?
- case MP_CSP_TRC_GAMMA20:
- case MP_CSP_TRC_GAMMA24:
- case MP_CSP_TRC_GAMMA26:
- case MP_CSP_TRC_PRO_PHOTO:
- case MP_CSP_TRC_V_LOG:
- case MP_CSP_TRC_S_LOG1:
- case MP_CSP_TRC_S_LOG2: // ?
+ case PL_COLOR_TRC_GAMMA18: // ?
+ case PL_COLOR_TRC_GAMMA20:
+ case PL_COLOR_TRC_GAMMA24:
+ case PL_COLOR_TRC_GAMMA26:
+ case PL_COLOR_TRC_PRO_PHOTO:
+ case PL_COLOR_TRC_V_LOG:
+ case PL_COLOR_TRC_S_LOG1:
+ case PL_COLOR_TRC_S_LOG2: // ?
default: return ZIMG_TRANSFER_BT709;
}
}
-static zimg_color_primaries_e mp_to_z_prim(enum mp_csp_prim prim)
+static zimg_color_primaries_e mp_to_z_prim(enum pl_color_primaries prim)
{
switch (prim) {
- case MP_CSP_PRIM_BT_601_525:return ZIMG_PRIMARIES_ST170_M;
- case MP_CSP_PRIM_BT_601_625:return ZIMG_PRIMARIES_BT470_BG;
- case MP_CSP_PRIM_BT_709: return ZIMG_PRIMARIES_BT709;
- case MP_CSP_PRIM_BT_2020: return ZIMG_PRIMARIES_BT2020;
- 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:
+ case PL_COLOR_PRIM_BT_601_525:return ZIMG_PRIMARIES_ST170_M;
+ case PL_COLOR_PRIM_BT_601_625:return ZIMG_PRIMARIES_BT470_BG;
+ case PL_COLOR_PRIM_BT_709: return ZIMG_PRIMARIES_BT709;
+ case PL_COLOR_PRIM_BT_2020: return ZIMG_PRIMARIES_BT2020;
+ case PL_COLOR_PRIM_BT_470M: return ZIMG_PRIMARIES_BT470_M;
+ case PL_COLOR_PRIM_DCI_P3: return ZIMG_PRIMARIES_ST431_2;
+ case PL_COLOR_PRIM_DISPLAY_P3:return ZIMG_PRIMARIES_ST432_1;
+ case PL_COLOR_PRIM_EBU_3213: return ZIMG_PRIMARIES_EBU3213_E;
+ case PL_COLOR_PRIM_FILM_C: return ZIMG_PRIMARIES_FILM;
+ case PL_COLOR_PRIM_CIE_1931:
+ case PL_COLOR_PRIM_APPLE: // ?
+ case PL_COLOR_PRIM_ADOBE:
+ case PL_COLOR_PRIM_PRO_PHOTO:
+ case PL_COLOR_PRIM_V_GAMUT:
+ case PL_COLOR_PRIM_S_GAMUT: // ?
+ case PL_COLOR_PRIM_ACES_AP0:
+ case PL_COLOR_PRIM_ACES_AP1:
default: return ZIMG_PRIMARIES_BT709;
}
}
@@ -375,7 +378,7 @@ static bool setup_format(zimg_image_format *zfmt, struct mp_zimg_repack *r,
r->z_planes[3] = n; // alpha, always plane 4 in zimg
#if HAVE_ZIMG_ALPHA
- zfmt->alpha = fmt.alpha == MP_ALPHA_PREMUL
+ zfmt->alpha = fmt.repr.alpha == PL_ALPHA_PREMULTIPLIED
? ZIMG_ALPHA_PREMULTIPLIED : ZIMG_ALPHA_STRAIGHT;
#else
return false;
@@ -414,7 +417,7 @@ static bool setup_format(zimg_image_format *zfmt, struct mp_zimg_repack *r,
zfmt->color_family = ZIMG_COLOR_YUV;
if (desc.num_planes <= 2) {
zfmt->color_family = ZIMG_COLOR_GREY;
- } else if (fmt.color.space == MP_CSP_RGB || fmt.color.space == MP_CSP_XYZ) {
+ } else if (fmt.repr.sys == PL_COLOR_SYSTEM_RGB || fmt.repr.sys == PL_COLOR_SYSTEM_XYZ) {
zfmt->color_family = ZIMG_COLOR_RGB;
}
@@ -441,16 +444,16 @@ static bool setup_format(zimg_image_format *zfmt, struct mp_zimg_repack *r,
// (Formats like P010 are basically reported as P016.)
zfmt->depth = desc.component_size * 8 + MPMIN(0, desc.component_pad);
- zfmt->pixel_range = fmt.color.levels == MP_CSP_LEVELS_PC ?
+ zfmt->pixel_range = fmt.repr.levels == PL_COLOR_LEVELS_FULL ?
ZIMG_RANGE_FULL : ZIMG_RANGE_LIMITED;
- zfmt->matrix_coefficients = mp_to_z_matrix(fmt.color.space);
- zfmt->transfer_characteristics = mp_to_z_trc(fmt.color.gamma);
- // For MP_CSP_XYZ only valid primaries are defined in ST 428-1
- zfmt->color_primaries = fmt.color.space == MP_CSP_XYZ
+ zfmt->matrix_coefficients = pl_to_z_matrix(fmt.repr.sys);
+ zfmt->transfer_characteristics = pl_to_z_trc(fmt.color.transfer);
+ // For PL_COLOR_SYSTEM_XYZ only valid primaries are defined in ST 428-1
+ zfmt->color_primaries = fmt.repr.sys == PL_COLOR_SYSTEM_XYZ
? ZIMG_PRIMARIES_ST428
: mp_to_z_prim(fmt.color.primaries);
- zfmt->chroma_location = mp_to_z_chroma(fmt.chroma_location);
+ zfmt->chroma_location = pl_to_z_chroma(fmt.chroma_location);
if (ctx && ctx->opts.fast) {
// mpv's default for RGB output slows down zimg significantly.
@@ -548,7 +551,7 @@ static bool mp_zimg_state_init(struct mp_zimg_context *ctx,
params.allow_approximate_gamma = 1;
// leave at default for SDR, which means 100 cd/m^2 for zimg
- if (ctx->dst.color.hdr.max_luma > 0 && mp_trc_is_hdr(ctx->dst.color.gamma))
+ if (ctx->dst.color.hdr.max_luma > 0 && pl_color_space_is_hdr(&ctx->dst.color))
params.nominal_peak_luminance = ctx->dst.color.hdr.max_luma;
st->graph = zimg_filter_graph_build(&src_fmt, &dst_fmt, &params);