From 74581a61064f56b170e555fa72d9cdca161d2307 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 22 Jan 2015 17:47:14 +0100 Subject: video: handle hwdec screenshots differently Instead of converting the hw surface to an image in the VO, provide a generic way to convet hw surfaces, and use this in the screenshot code. It's all relatively straightforward, except vdpau is being terrible. It needs a huge chunk of new code, because copying back is not simple. --- player/screenshot.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'player') diff --git a/player/screenshot.c b/player/screenshot.c index 4e22afc69d..7d1c743e40 100644 --- a/player/screenshot.c +++ b/player/screenshot.c @@ -343,6 +343,16 @@ static struct mp_image *screenshot_get(struct MPContext *mpctx, int mode) image = args.out_image; if (image) { + if (mpctx->d_video && mpctx->d_video->hwdec_info) { + struct mp_hwdec_ctx *ctx = mpctx->d_video->hwdec_info->hwctx; + struct mp_image *nimage = NULL; + if (ctx && ctx->download_image) + nimage = ctx->download_image(ctx, image, NULL); + if (nimage) { + talloc_free(image); + image = nimage; + } + } if (mode == MODE_SUBTITLES && !args.has_osd) add_subs(mpctx, image); } -- cgit v1.2.3