From 4e3663a2da5da33231ced7ae513c2a9017cd4298 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 19 Aug 2016 09:37:52 +0200 Subject: vf_rotate: allow arbitrary rotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vf_rotate selects the correct filter for 90° rotation, but it can be extended to use lavfi's vf_rotate as fallback. See #3434. --- video/filter/vf_rotate.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'video') diff --git a/video/filter/vf_rotate.c b/video/filter/vf_rotate.c index 60e52a00bd..dcaba53c6a 100644 --- a/video/filter/vf_rotate.c +++ b/video/filter/vf_rotate.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include "common/msg.h" @@ -46,11 +47,17 @@ static int lavfi_reconfig(struct vf_instance *vf, struct vf_priv_s *p = vf_lw_old_priv(vf); if (p->angle == 4) { // "auto" int r = in->rotate; - if (r < 0 || r >= 360 || (r % 90) != 0) { + if (r < 0 || r >= 360) { MP_ERR(vf, "Can't apply rotation of %d degrees.\n", r); return -1; } - vf_lw_update_graph(vf, NULL, "%s", rot[(r / 90) % 360]); + if (r % 90) { + double a = r / 180.0 * M_PI; + vf_lw_update_graph(vf, NULL, "rotate=%f:ow=rotw(%f):oh=roth(%f)", + a, a, a); + } else { + vf_lw_update_graph(vf, NULL, "%s", rot[(r / 90) % 360]); + } out->rotate = 0; } return 0; -- cgit v1.2.3