From 716285782d5e4b264e18e253e9d58980183c76c6 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 15 Jun 2014 20:46:57 +0200 Subject: video/out: change aspects of OSD handling Let the VOs draw the OSD on their own, instead of making OSD drawing a separate VO driver call. Further, let it be the VOs responsibility to request subtitles with the correct PTS. We also basically allow the VO to request OSD/subtitles at any time. OSX changes untested. --- video/out/vo_lavc.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'video/out/vo_lavc.c') diff --git a/video/out/vo_lavc.c b/video/out/vo_lavc.c index ed23a27066..7bc9c1a3b7 100644 --- a/video/out/vo_lavc.c +++ b/video/out/vo_lavc.c @@ -485,32 +485,23 @@ static void draw_image_unlocked(struct vo *vo, mp_image_t *mpi) } static void draw_image(struct vo *vo, mp_image_t *mpi) -{ - pthread_mutex_lock(&vo->encode_lavc_ctx->lock); - draw_image_unlocked(vo, mpi); - pthread_mutex_unlock(&vo->encode_lavc_ctx->lock); -} - -static void flip_page_timed(struct vo *vo, int64_t pts_us, int duration) -{ -} - -static void draw_osd(struct vo *vo, struct osd_state *osd) { struct priv *vc = vo->priv; - pthread_mutex_lock(&vo->encode_lavc_ctx->lock); - + draw_image_unlocked(vo, mpi); if (vc->lastimg && vc->lastimg_wants_osd && vo->params) { struct mp_osd_res dim = osd_res_from_image_params(vo->params); - osd_draw_on_image(osd, dim, osd_get_vo_pts(osd), OSD_DRAW_SUB_ONLY, + osd_draw_on_image(vo->osd, dim, mpi->pts, OSD_DRAW_SUB_ONLY, vc->lastimg); } - pthread_mutex_unlock(&vo->encode_lavc_ctx->lock); } +static void flip_page_timed(struct vo *vo, int64_t pts_us, int duration) +{ +} + static int control(struct vo *vo, uint32_t request, void *data) { struct priv *vc = vo->priv; @@ -536,7 +527,6 @@ const struct vo_driver video_out_lavc = { .control = control, .uninit = uninit, .draw_image = draw_image, - .draw_osd = draw_osd, .flip_page_timed = flip_page_timed, }; -- cgit v1.2.3