From: U. Artie Eoff Date: Wed, 21 Aug 2019 17:46:43 +0000 (-0700) Subject: msdk: vpp: rotate output frame X-Git-Tag: 1.19.3~507^2~2940 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bd3caf0c04393905e7316aefff5df4134bebd63d;p=platform%2Fupstream%2Fgstreamer.git 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 --- 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);