summaryrefslogtreecommitdiffstats
path: root/sub/osd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sub/osd.c')
-rw-r--r--sub/osd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sub/osd.c b/sub/osd.c
index a0618aafd9..001666d088 100644
--- a/sub/osd.c
+++ b/sub/osd.c
@@ -247,6 +247,10 @@ static void render_object(struct osd_state *osd, struct osd_object *obj,
{
struct MPOpts *opts = osd->opts;
+ int format = SUBBITMAP_LIBASS;
+ if (!sub_formats[format] || opts->force_rgba_osd)
+ format = SUBBITMAP_RGBA;
+
bool formats[SUBBITMAP_COUNT];
memcpy(formats, sub_formats, sizeof(formats));
if (opts->force_rgba_osd)
@@ -261,7 +265,7 @@ static void render_object(struct osd_state *osd, struct osd_object *obj,
double sub_pts = video_pts;
if (sub_pts != MP_NOPTS_VALUE)
sub_pts -= opts->sub_delay;
- sub_get_bitmaps(obj->sub, obj->vo_res, sub_pts, out_imgs);
+ sub_get_bitmaps(obj->sub, obj->vo_res, format, sub_pts, out_imgs);
}
} else if (obj->type == OSDTYPE_EXTERNAL2) {
if (obj->external2 && obj->external2->format) {
@@ -269,7 +273,7 @@ static void render_object(struct osd_state *osd, struct osd_object *obj,
obj->external2->change_id = 0;
}
} else {
- osd_object_get_bitmaps(osd, obj, out_imgs);
+ osd_object_get_bitmaps(osd, obj, format, out_imgs);
}
if (obj->force_redraw)