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:
1 parent
e89a491052
commit
345e783643
2 files changed
+4
-2
No files matched your search
@@ -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 &&
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user