From fb4ae3c06ca6598ecf31d9e39276f87091e5037d Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 12 Jan 2017 13:02:19 +0100 Subject: cuda: use libavutil functions for copying hw surfaces to memory mp_image_hw_download() is a libavutil wrapper added in the previous commit. We drop our own code completely, as everything is provided by libavutil and our helper wrapper. This breaks the screenshot code, so that has to be adjusted as well. --- player/screenshot.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'player/screenshot.c') diff --git a/player/screenshot.c b/player/screenshot.c index 13532ec1a3..4c043ab986 100644 --- a/player/screenshot.c +++ b/player/screenshot.c @@ -31,6 +31,7 @@ #include "common/msg.h" #include "options/path.h" #include "video/mp_image.h" +#include "video/mp_image_pool.h" #include "video/decode/dec_video.h" #include "video/out/vo.h" #include "video/image_writer.h" @@ -346,12 +347,15 @@ static struct mp_image *screenshot_get(struct MPContext *mpctx, int mode) } } - if (image && mpctx->vo_chain && mpctx->vo_chain->hwdec_devs) { - struct mp_hwdec_ctx *ctx = - hwdec_devices_get_first(mpctx->vo_chain->hwdec_devs); - struct mp_image *nimage = NULL; - if (ctx && ctx->download_image && (image->fmt.flags & MP_IMGFLAG_HWACCEL)) - nimage = ctx->download_image(ctx, image, NULL); + bool hwimage = image && (image->fmt.flags & MP_IMGFLAG_HWACCEL); + if (hwimage) { + struct mp_image *nimage = mp_image_hw_download(image, NULL); + if (!nimage && mpctx->vo_chain && mpctx->vo_chain->hwdec_devs) { + struct mp_hwdec_ctx *ctx = + hwdec_devices_get_first(mpctx->vo_chain->hwdec_devs); + if (ctx && ctx->download_image && hwimage) + nimage = ctx->download_image(ctx, image, NULL); + } if (nimage) { talloc_free(image); image = nimage; -- cgit v1.2.3