diff options
author | wm4 <wm4@nowhere> | 2019-11-30 18:09:31 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-11-30 18:09:31 +0100 |
commit | 78f1629a539cc14a598831a73c59c3763c074094 (patch) | |
tree | f2dd75c25225701d9161721fd598a2bd71b96d01 /video/filter/vf_gpu.c | |
parent | 6a88e7463e9f759121b109be16cd4bd911355c86 (diff) | |
download | mpv-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/vf_gpu.c')
-rw-r--r-- | video/filter/vf_gpu.c | 10 |
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); |