diff options
author | Colin Kinloch <colin.kinloch@collabora.com> | 2022-09-23 21:29:31 +0300 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2022-11-11 09:45:49 +0300 |
commit | 841f50f0d91c246df1eb28a261731168f582d029 (patch) | |
tree | 2b39bc26a3876cab300c41d9bbe34bb45f11eaba | |
parent | e1d71aedbcb409ebf498399c6bf282361d885a4f (diff) |
va: Fix vapostproc navigation event co-ordinate mapping
Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3053>
-rw-r--r-- | subprojects/gst-plugins-bad/sys/va/gstvavpp.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/subprojects/gst-plugins-bad/sys/va/gstvavpp.c b/subprojects/gst-plugins-bad/sys/va/gstvavpp.c index a081c03498..730bea3781 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvavpp.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvavpp.c @@ -1897,10 +1897,10 @@ static void _get_scale_factor (GstVaVpp * self, gdouble * w_factor, gdouble * h_factor) { GstVaBaseTransform *btrans = GST_VA_BASE_TRANSFORM (self); - gdouble w = GST_VIDEO_INFO_WIDTH (&btrans->in_info); - gdouble h = GST_VIDEO_INFO_HEIGHT (&btrans->in_info); + gdouble w = GST_VIDEO_INFO_WIDTH (&btrans->out_info); + gdouble h = GST_VIDEO_INFO_HEIGHT (&btrans->out_info); - switch (self->direction) { + switch (gst_va_filter_get_orientation (btrans->filter)) { case GST_VIDEO_ORIENTATION_90R: case GST_VIDEO_ORIENTATION_90L: case GST_VIDEO_ORIENTATION_UR_LL: @@ -1914,10 +1914,10 @@ _get_scale_factor (GstVaVpp * self, gdouble * w_factor, gdouble * h_factor) break; } - *w_factor = GST_VIDEO_INFO_WIDTH (&btrans->out_info); + *w_factor = GST_VIDEO_INFO_WIDTH (&btrans->in_info); *w_factor /= w; - *h_factor = GST_VIDEO_INFO_HEIGHT (&btrans->out_info); + *h_factor = GST_VIDEO_INFO_HEIGHT (&btrans->in_info); *h_factor /= h; } @@ -1945,35 +1945,35 @@ gst_va_vpp_src_event (GstBaseTransform * trans, GstEvent * event) break; /* video-direction compensation */ - switch (self->direction) { + switch (gst_va_filter_get_orientation (btrans->filter)) { case GST_VIDEO_ORIENTATION_90R: new_x = y; - new_y = GST_VIDEO_INFO_WIDTH (in_info) - 1 - x; + new_y = GST_VIDEO_INFO_WIDTH (out_info) - 1 - x; break; case GST_VIDEO_ORIENTATION_90L: - new_x = GST_VIDEO_INFO_HEIGHT (in_info) - 1 - y; + new_x = GST_VIDEO_INFO_HEIGHT (out_info) - 1 - y; new_y = x; break; case GST_VIDEO_ORIENTATION_UL_LR: - new_x = GST_VIDEO_INFO_HEIGHT (in_info) - 1 - y; - new_y = GST_VIDEO_INFO_WIDTH (in_info) - 1 - x; - break; - case GST_VIDEO_ORIENTATION_UR_LL: new_x = y; new_y = x; break; + case GST_VIDEO_ORIENTATION_UR_LL: + new_x = GST_VIDEO_INFO_HEIGHT (out_info) - 1 - y; + new_y = GST_VIDEO_INFO_WIDTH (out_info) - 1 - x; + break; case GST_VIDEO_ORIENTATION_180: /* FIXME: is this correct? */ - new_x = GST_VIDEO_INFO_WIDTH (in_info) - 1 - x; - new_y = GST_VIDEO_INFO_HEIGHT (in_info) - 1 - y; + new_x = GST_VIDEO_INFO_WIDTH (out_info) - 1 - x; + new_y = GST_VIDEO_INFO_HEIGHT (out_info) - 1 - y; break; case GST_VIDEO_ORIENTATION_HORIZ: - new_x = GST_VIDEO_INFO_WIDTH (in_info) - 1 - x; + new_x = GST_VIDEO_INFO_WIDTH (out_info) - 1 - x; new_y = y; break; case GST_VIDEO_ORIENTATION_VERT: new_x = x; - new_y = GST_VIDEO_INFO_HEIGHT (in_info) - 1 - y; + new_y = GST_VIDEO_INFO_HEIGHT (out_info) - 1 - y; break; default: new_x = x; |