From 17df53519f6359881462da0251e85f99fefd884d Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Fri, 19 Nov 2021 12:10:25 +0100 Subject: vo_gpu_next: fix panning on rotated videos Closes #9454 --- video/out/vo_gpu_next.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/video/out/vo_gpu_next.c b/video/out/vo_gpu_next.c index 4b3abf060e..fbc9474a67 100644 --- a/video/out/vo_gpu_next.c +++ b/video/out/vo_gpu_next.c @@ -729,10 +729,16 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame) p->src.x0, p->src.y0, p->src.x1, p->src.y1, }; - // mpv gives us transposed rects, libplacebo expects untransposed - if (img->rotation % PL_ROTATION_180) { - MPSWAP(float, img->crop.x0, img->crop.y0); - MPSWAP(float, img->crop.x1, img->crop.y1); + // mpv gives us rotated/flipped rects, libplacebo expects unrotated + pl_rect2df_rotate(&img->crop, -img->rotation); + if (img->crop.x1 < img->crop.x0) { + img->crop.x0 = vo->params->w - img->crop.x0; + img->crop.x1 = vo->params->w - img->crop.x1; + } + + if (img->crop.y1 < img->crop.y0) { + img->crop.y0 = vo->params->h - img->crop.y0; + img->crop.y1 = vo->params->h - img->crop.y1; } } } -- cgit v1.2.3