summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-11-30 18:09:31 +0100
committerwm4 <wm4@nowhere>2019-11-30 18:09:31 +0100
commit78f1629a539cc14a598831a73c59c3763c074094 (patch)
treef2dd75c25225701d9161721fd598a2bd71b96d01 /video/filter
parent6a88e7463e9f759121b109be16cd4bd911355c86 (diff)
downloadmpv-78f1629a539cc14a598831a73c59c3763c074094.tar.bz2
mpv-78f1629a539cc14a598831a73c59c3763c074094.tar.xz
vf_gpu: render subtitles
Pretty annoying affair. The vo_gpu code could of course not trigger rendering from filters yet, so it needed to be extended. Also, this uses some icky stuff made for vf_sub (and this was the reason I marked vf_sub as deprecated), so everything is terrible.
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf_gpu.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/video/filter/vf_gpu.c b/video/filter/vf_gpu.c
index 3cb9fe151b..5528abaa60 100644
--- a/video/filter/vf_gpu.c
+++ b/video/filter/vf_gpu.c
@@ -176,6 +176,14 @@ static struct mp_image *gpu_render_frame(struct mp_filter *f, struct mp_image *i
struct mp_rect src, dst;
struct mp_osd_res osd;
+ struct mp_stream_info *info = mp_filter_find_stream_info(f);
+ struct osd_state *osd_state = info ? info->osd : NULL;
+ if (osd_state) {
+ osd_set_render_subs_in_filter(osd_state, true);
+ // Assume the osd_state doesn't somehow disappear.
+ gl_video_set_osd_source(priv->renderer, osd_state);
+ }
+
mp_get_src_dst_rects(f->log, priv->vo_opts, VO_CAP_ROTATE90, &in->params,
w, h, 1, &src, &dst, &osd);
@@ -202,7 +210,7 @@ static struct mp_image *gpu_render_frame(struct mp_filter *f, struct mp_image *i
}
// (it doesn't have access to the OSD though)
- int flags = RENDER_FRAME_SUBS | RENDER_FRAME_OSD;
+ int flags = RENDER_FRAME_SUBS | RENDER_FRAME_VF_SUBS;
gl_video_render_frame(priv->renderer, &frame, (struct ra_fbo){priv->target},
flags);