static void draw_osd(struct vo *vo, struct osd_state *osd) { struct priv *p = vo->priv; 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, p->current); }
static void draw_image(struct vo *vo, mp_image_t *mpi) { struct priv *p = vo->priv; p->current = mpi; struct mp_osd_res dim = osd_res_from_image_params(vo->params); osd_draw_on_image(vo->osd, dim, mpi->pts, OSD_DRAW_SUB_ONLY, p->current); }
static void draw_osd(struct vo *vo, struct osd_state *osd) { struct xvctx *ctx = vo->priv; struct mp_image img = get_xv_buffer(vo, ctx->current_buf); struct mp_osd_res res = osd_res_from_image_params(vo->params); osd_draw_on_image(osd, res, osd_get_vo_pts(osd), 0, &img); }
// Note: REDRAW_FRAME can call this with NULL. static void draw_image(struct vo *vo, mp_image_t *mpi) { struct xvctx *ctx = vo->priv; wait_for_completion(vo, ctx->num_buffers - 1); struct mp_image xv_buffer = get_xv_buffer(vo, ctx->current_buf); if (mpi) { mp_image_copy(&xv_buffer, mpi); } else { mp_image_clear(&xv_buffer, 0, 0, xv_buffer.w, xv_buffer.h); } struct mp_osd_res res = osd_res_from_image_params(vo->params); osd_draw_on_image(vo->osd, res, mpi ? mpi->pts : 0, 0, &xv_buffer); if (mpi != ctx->original_image) { talloc_free(ctx->original_image); ctx->original_image = mpi; } }