From b8177f7b5237050ca61c3161078b2954ecd58b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Thu, 7 Sep 2023 21:05:02 +0200 Subject: vo_gpu: support crop in gl_video_screenshot --- video/out/gpu/video.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'video/out') diff --git a/video/out/gpu/video.c b/video/out/gpu/video.c index 97778c1f46..e9f658426f 100644 --- a/video/out/gpu/video.c +++ b/video/out/gpu/video.c @@ -3470,14 +3470,24 @@ void gl_video_screenshot(struct gl_video *p, struct vo_frame *frame, int src_w = p->image_params.w; int src_h = p->image_params.h; + struct mp_rect src = {0, 0, src_w, src_h}; + struct mp_rect dst = {0, 0, w, h}; + + if (mp_image_crop_valid(&p->image_params)) + src = p->image_params.crop; + if (p->image_params.rotate % 180 == 90) { MPSWAP(int, w, h); MPSWAP(int, src_w, src_h); } + mp_rect_rotate(&src, src_w, src_h, p->image_params.rotate); + mp_rect_rotate(&dst, w, h, p->image_params.rotate); - struct mp_rect src = {0, 0, src_w, src_h}; - struct mp_rect dst = {0, 0, w, h}; - struct mp_osd_res osd = {.w = w, .h = h, .display_par = 1.0}; + struct mp_osd_res osd = { + .display_par = 1.0, + .w = mp_rect_w(dst), + .h = mp_rect_h(dst), + }; gl_video_resize(p, &src, &dst, &osd); } -- cgit v1.2.3