vo_gpu_next: use video colorspace for overlays only when requested

Bitmap subtitles muxed in media file are generally the same colorspace
as video. Generic overlays may not be.
This commit is contained in:
posi authored and Kacper Michajłow committed 2026-08-23 18:09:02 +02:00
1 parent e89a491052
commit 345e783643
2 files changed
+4 -2

No files matched your search

+1
View File
@@ -465,6 +465,7 @@ static struct sub_bitmaps *get_bitmaps(struct sd *sd, struct mp_osd_res d,
res->packed_w = current->bound_w;
res->packed_h = current->bound_h;
res->format = SUBBITMAP_BGRA;
res->video_color_space = true;
double video_par = 0;
if (priv->avctx->codec_id == AV_CODEC_ID_DVD_SUBTITLE &&
+3 -2
View File
@@ -373,13 +373,14 @@ static void dup_stereo_parts(struct priv *p, struct osd_entry *entry,
}
static struct pl_color_space bgra_overlay_color(struct priv *p,
const struct sub_bitmaps *item,
const struct mp_image *src,
float ref_luma)
{
struct pl_color_space color = pl_color_space_srgb;
// Infer bitmap colorspace from source
if (src) {
if (src && item->video_color_space) {
color = src->params.color;
if (pl_color_transfer_is_hdr(color.transfer)) {
bool use_static = p->next_opts->image_subs_hdr_peak == -2;
@@ -448,7 +449,7 @@ static void add_item_overlay(struct priv *p, struct osd_state *state,
case SUBBITMAP_BGRA:
ol->mode = PL_OVERLAY_NORMAL;
ol->repr.alpha = PL_ALPHA_PREMULTIPLIED;
ol->color = bgra_overlay_color(p, src, ref_luma);
ol->color = bgra_overlay_color(p, item, src, ref_luma);
break;
case SUBBITMAP_LIBASS:
ol->mode = PL_OVERLAY_MONOCHROME;