From bd3caf0c04393905e7316aefff5df4134bebd63d Mon Sep 17 00:00:00 2001 From: "U. Artie Eoff" Date: Wed, 21 Aug 2019 10:46:43 -0700 Subject: [PATCH] msdk: vpp: rotate output frame When vpp rotation is 90 or 270, the output frame should be rotated, too. Example: gst-launch-1.0 -vf videotestsrc \ ! video/x-raw,width=720,height=480 \ ! msdkvpp rotation=90 ! vaapisink --- sys/msdk/gstmsdkvpputil.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sys/msdk/gstmsdkvpputil.c b/sys/msdk/gstmsdkvpputil.c index eef85ed..402aaeb 100644 --- a/sys/msdk/gstmsdkvpputil.c +++ b/sys/msdk/gstmsdkvpputil.c @@ -28,6 +28,10 @@ #include "gstmsdkvpputil.h" #include "msdk-enums.h" +#define SWAP_GINT(a, b) do { \ + const gint t = a; a = b; b = t; \ + } while (0) + gboolean gst_msdkvpp_is_deinterlace_enabled (GstMsdkVPP * msdkvpp, GstVideoInfo * vip) { @@ -75,6 +79,12 @@ fixate_output_frame_size (GstMsdkVPP * thiz, GstVideoInfo * vinfo, from_w = GST_VIDEO_INFO_WIDTH (vinfo); from_h = GST_VIDEO_INFO_HEIGHT (vinfo); + /* compensate for rotation if needed */ + if (thiz->rotation == 90 || thiz->rotation == 270) { + SWAP_GINT (from_w, from_h); + SWAP_GINT (from_par_n, from_par_d); + } + gst_structure_get_int (outs, "width", &w); gst_structure_get_int (outs, "height", &h); -- 2.7.4