From e3b835de7c91b8fcdd42652d25f7bafae979fc55 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Thu, 6 Jan 2022 08:39:51 +0100 Subject: vo_gpu_next: forward dovi metadata to libplacebo --- video/out/vo_gpu_next.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/video/out/vo_gpu_next.c b/video/out/vo_gpu_next.c index 9bbb58101f..98c673eb57 100644 --- a/video/out/vo_gpu_next.c +++ b/video/out/vo_gpu_next.c @@ -508,6 +508,23 @@ static bool map_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame *src pl_chroma_location_offset(chroma, &plane->shift_x, &plane->shift_y); } +#ifdef PL_HAVE_LAV_DOLBY_VISION + if (mpi->dovi) { + const AVDOVIMetadata *metadata = (AVDOVIMetadata *) mpi->dovi->data; + struct pl_dovi_metadata *dovi = talloc_ptrtype(mpi, dovi); + const AVDOVIColorMetadata *color = av_dovi_get_color(metadata); + pl_map_dovi_metadata(dovi, metadata); + frame->repr.dovi = dovi; + frame->repr.sys = PL_COLOR_SYSTEM_DOLBYVISION; + frame->color.primaries = PL_COLOR_PRIM_BT_2020; + frame->color.transfer = PL_COLOR_TRC_PQ; + frame->color.hdr.min_luma = + pl_hdr_rescale(PL_HDR_PQ, PL_HDR_NITS, color->source_min_pq / 4095.0f); + frame->color.hdr.max_luma = + pl_hdr_rescale(PL_HDR_PQ, PL_HDR_NITS, color->source_max_pq / 4095.0f); + } +#endif + // Compute a unique signature for any attached ICC profile. Wasteful in // theory if the ICC profile is the same for multiple frames, but in // practice ICC profiles are overwhelmingly going to be attached to -- cgit v1.2.3