From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by yocto-www.yoctoproject.org (Postfix, from userid 118) id 75ACFE00C21; Tue, 2 Feb 2016 06:21:11 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on yocto-www.yoctoproject.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.1 X-Spam-HAM-Report: * -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no * trust * [157.56.110.132 listed in list.dnswl.org] * -0.0 SPF_HELO_PASS SPF: HELO matches SPF record * -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] X-Greylist: delayed 961 seconds by postgrey-1.32 at yocto-www; Tue, 02 Feb 2016 06:20:49 PST Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0132.outbound.protection.outlook.com [157.56.110.132]) by yocto-www.yoctoproject.org (Postfix) with ESMTP id 2D5DBE00BF7 for ; Tue, 2 Feb 2016 06:20:49 -0800 (PST) Received: from CH1PR03CA004.namprd03.prod.outlook.com (10.255.156.149) by CY1PR0301MB1179.namprd03.prod.outlook.com (10.160.165.22) with Microsoft SMTP Server (TLS) id 15.1.396.15; Tue, 2 Feb 2016 14:04:47 +0000 Received: from BL2FFO11FD027.protection.gbl (10.255.156.132) by CH1PR03CA004.outlook.office365.com (10.255.156.149) with Microsoft SMTP Server (TLS) id 15.1.396.15 via Frontend Transport; Tue, 2 Feb 2016 14:04:47 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD027.mail.protection.outlook.com (10.173.161.106) with Microsoft SMTP Server (TLS) id 15.1.409.7 via Frontend Transport; Tue, 2 Feb 2016 14:04:46 +0000 Received: from carol-OptiPlex-3020.ap.freescale.net (carol-OptiPlex-3020.ap.freescale.net [10.192.241.17]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u12E4bHE022485; Tue, 2 Feb 2016 07:04:45 -0700 From: Yuqing Zhu To: Date: Tue, 2 Feb 2016 22:01:48 +0800 Message-ID: <1454421709-32063-3-git-send-email-b54851@freescale.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1454421709-32063-1-git-send-email-b54851@freescale.com> References: <1454421709-32063-1-git-send-email-b54851@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD027; 1:/ywd6h4+7j1KDrF19pPKJbsY6D0SYoiHE5UPuCAeB+M9gQ79SJ1hroKptHKDBUvH1hO0yx1cN8Ni9pJMnT79SloV/6HgWF4yI4vNruumxRPJo3CWTqGYI5IQ5NfR/rLenADtozWT7fMiGauPOX3fpHGbc/QB8CRZ2X7jtGOSWB1bXFOdKPi/ZijJRb1o8g7sOAjYfaLs570gC0caTXX+HarIAuCRwlU3W9f+Je9mCvLOtalwDKml3CRgonnSq+KhPvQ1ECUp0A9szwPMU2jFXyjxCLrC5gXmj9QKiG8ezR5YFZacdZEf5EyJskJGJf8i+MhuWRkyv1JNqMGbG5PCwypQO3TRgoxTGt7r70jtDCFy9ApJtCl6whaugF5s7ovsz+jka/lRaWYMFYXcoY0l5+bHS7klsctkJJfFtLo6cepqZaFG6Q50u1p9mf/8LuNb X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(4326007)(48376002)(3470700001)(230783001)(586003)(77096005)(106466001)(50466002)(33646002)(11100500001)(189998001)(36756003)(1096002)(1220700001)(5008740100001)(47776003)(110136002)(5001960100002)(107886002)(104016004)(6806005)(4001430100002)(87936001)(2950100001)(19580405001)(50986999)(76176999)(2906002)(19580395003)(85326001)(92566002)(50226001)(2351001)(5003940100001)(575784001)(86362001)(229853001); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR0301MB1179; H:tx30smr01.am.freescale.net; FPR:; SPF:PermError; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: de0d919b-7036-4192-d03e-08d32bd9cef9 X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1179; 2:+5fqKWBIcpn2bEPMIrfObmxlU8Fb4tedMjiyISCD/KPF6f7X46oQu6px7vj7T1LuKS2S3jABkg1bo3XatULGDyg+DsrYK+lr30wZcpivieRQU6CXCoknQx/xEK5cgiLpYOq7VS4SE9AoEnQjubMSGDiBY5iv0s3dnRJ4SwVxADmASFcGEd6pECuLSbZYHAgC; 3:6jpmu+/l9ryJbH9MdFqwZTqSGlAmS6xGNUfj6jS7oMezVTJM34Fy08NcbybaDdVOrUv9AwyyH1uTiFAFEyUj4SA/+mbKcT039WviW8C/+xRco+WFVkbJqLWs2ZGMJs4gyOGDHb0ANGVoS7lyUmASROrBw9cXswZ84HqRq0qXMuuIZcIeVTxWEBbYKJw4jIqDOxGypsKAM5nxqCB6SM8GpPqBri3qhbmYye8Q05xwyy8=; 25:trRG0x9SUJ53qXkUozhfDzqOtM2qdnJoNRVpBFAB9V9pqF9RpPtb1h3ninZnKZ3E3hY20LZyMx01miCV9tumwAnMvpO898X+rpSy0+e5sLKDSPXnDPbalq4oMaaiKz46UzZHifIUX8BdMXvP4vVz42sS4rWeSVqppNhcIPmKe1tJO9gNm655/qiBcYc0Nlvgpjoh811hkawDQ03BODV5Cdafp7pOnwx6FStQankSlIQ+Im+Gupc5gjZ6YJQ090xd X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1179; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1179; 20:Zm6iKtu/urXWtzSaCdSyuDwYVIO85S6dy9s7b2mLzJ5/E8NG8DVo8VzNdY1lL8flJWFKB+s36Jr0an3+Ok41P6wXVZLaa4U52T3OQ7X1joci9dJtsKSKuLJE11YfvjVjuBjLRYIuBESU+oReK8Sqt6mTaooCbFA9Hzq6zfCy+9bDqjLe8YMnhbRuVicbo+nkwGq7E41RnqgopD9nN75l0p4/R1uzp5ch/oFfNf1MXRK/BjqlHnSBHlDT9sEcHfjyDBye/r3JmugVzQdpBAGbZ9HKfcsaCTDxLymN/K1siIPyx0l0HB2PjukZFA215p2IKS6+Ic1sGPSWKyZWTU22wH24sjUHU1ZWQoZw8Bg+xcbvkNEqUl/ddH1wU77meDyn54wj3lgVXFbIkPfhQROARM6HGS7DmndCqkkq8CCU3Yd6V4thrrgMmoFKboWm8wyC; 4:lD4MFjemZyTz9XC24pXk99D9Gr8mQb9rGRNKRPFP38VzpOKdKaI3EdEXiUDIQH6OePxVvfdPSURBJGiUjgct5DmnOX4DMDiB6UxnV00p8aOAvh+7wLuAdmU12Bh92j0bFqLtJw95BPTlJHNWEn/g8BBcgR8b1MVszmOTRlfXYoTfJwowk62u3hBmyvmmR+SkV4VmjLwXlsPKwx3fW6kBbUlJ2ROJqxK5A9giHXE5y9WffYWRYCBWvq+MgUkr83Vl7b+C/eVJkRYOIXVDJBy4hPJJwEw7VPYsCUKcw+zevO8TcqjW/5V6jeFeDsqeeGaGUc6K7RgXCf0AOeBQABYhbb2SkAre/Qv0yBSm+QzkwWoQGmy2XeFDcP/JLFI/XP4WkGNLXs4BIhRePysvgEqlXyjHzY1NyRZO4C/YN/29jDsArnl6SrkRj6StFnnZTZcK0659tJEDazacAzmRyo5GopqGvDXa2jrt0nXsRLIg2lw9y1MUuDEZHdsHbrE7i3Qk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(5005006)(13024025)(13018025)(13015025)(8121501046)(13017025)(10201501046)(3002001); SRVR:CY1PR0301MB1179; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0301MB1179; X-Forefront-PRVS: 084080FC15 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1179; 23:CBH9yucRWrVtVgOvJLcFFFFR4XsRFbvGkwXLKzl?= =?us-ascii?Q?zMjghezQhcDRTCWbongasVHvEIYHIDyfMny4JuzPuTp6Jbm/wf3uGMubNXAs?= =?us-ascii?Q?eGXBrrXHbPCP7c7iTv+Anul3zTAW858FlZzr+BpkPEW8vVQMM5UOHt+mwTOO?= =?us-ascii?Q?c/zicvIJyBc/P1iivHSEL1B7mHlxnvP4IYhe+nQXj1Gu+p8JxYiEKdD7yHCy?= =?us-ascii?Q?3POwWnxQk0x9ij6ytrzwFITGz6ffySwgDR6/0nQnS+WKcwvbu45DKnjE3z7Q?= =?us-ascii?Q?dBjn8O51JjVOUiG3ysvXgVLOVBNiHVbIZb2ep/RO3lfsvb4XQWo+Y/nCnsj6?= =?us-ascii?Q?bNR2b5IOyXSnxnsOeOrKFnESJMnj0hfUIlD7RWRxO6OZhmiOYtX6HM/v38bR?= =?us-ascii?Q?UWjHsAJlqiJAXsusl68TdJgTn3s/I3ol3NP8P7Bzilm6MwYngfPfIgmysegs?= =?us-ascii?Q?uapro2EzJ5/QPLmHPbgLIodKyIknb9cuuR76wybViIF1fE6d8EGS3yGoD1lD?= =?us-ascii?Q?vZ6DKMeo7jF8abBVtLNYPAAFa9H2X/a36ZfczWCda5spwnWmkcf6MaOMvT/D?= =?us-ascii?Q?Rt9fzOW6/fHtLjrol6pD0ZhF9dUx1tsUdhnzlddaE57Ddug8OCXIHJEQf169?= =?us-ascii?Q?FDeUUCEhGaBDFvFfqqcAn9nlyT7GMfuZXPlQFrS+hl2ifCxrK3U0W3nGVLT8?= =?us-ascii?Q?3ofqtahdlJSFs4XMreyrPn2gNS25P+n1vc8S+iP7QV3qZoKfO6l2tDEChaN+?= =?us-ascii?Q?CKnXo+UKyRTHXJvcvjhxqu3oY7GjxMXQyoypTNqwdUF6DO0x2wfPb1dLEE0+?= =?us-ascii?Q?QUAU2svupH1WPyTdDKg+GJhXj9/4aEUHnJgjgoDhuycjuhAX6pjt9uW3ANzG?= =?us-ascii?Q?7v8iXFeDS0HaR//j+8kLMSUFYUcjI5P4Jjis2ZkXtVrnYsdK3tF5IQK/lD7a?= =?us-ascii?Q?vJkcIM3qcRynkHHzKUOHcYXjZQye7J9KdRsRyhEEfWExY22OpcNwgsQJivB8?= =?us-ascii?Q?M12P9v38oMRTZP4sochuu5u+Aas/50TptKeaLSnb8hfxqZJ7z6aIoVUqGma/?= =?us-ascii?Q?D/ErmK21KMippYbuMRioyNmn11sF+dDamLJSGcb68st09czcGsavLmJtadtU?= =?us-ascii?Q?5JaFHz/7cF0s=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1179; 5:UYRFR18bVgJ42q7L6vGWGnenzjh4VfgGt00MfIGdzNjH8np1W8zY/1b1EMVGcFGNFFhZCOTZ9b2khwc59h4yR8E57Y/TvlxXL0r5piXx5ZBJmjUwNfoi/DxWbk8y/0R0O89YIwM+oZvBRhNV63tBug==; 24:6gP4Zjg9UxRrHHI8EZTvs9hf5tzphnLoD+fWXS2NmeFAJGE7kXdZzl+L6dIMhmJBtSTfq9odAcUoyVPhvyG0lVVH6dv/9Z6BDiGrBaiiFD8= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2016 14:04:46.8031 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB1179 Subject: [meta-fsl-arm][PATCH v2 2/3] gstreamer1.0-plugins-bad: Support video crop for glimagesink X-BeenThere: meta-freescale@yoctoproject.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Usage and development list for the meta-fsl-* layers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2016 14:21:11 -0000 Content-Type: text/plain 1. Add video crop meta copy in glupload. 2. Calculate the new texture coordinate in vertices array and bind to buffer object. 3. Make glimagesink only updating vertices array when video crop meta changed. Signed-off-by: Yuqing Zhu --- ...plugin-support-video-crop-for-glimagesink.patch | 155 +++++++++++++++++++++ .../gstreamer/gstreamer1.0-plugins-bad_%.bbappend | 1 + 2 files changed, 156 insertions(+) create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glplugin-support-video-crop-for-glimagesink.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glplugin-support-video-crop-for-glimagesink.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glplugin-support-video-crop-for-glimagesink.patch new file mode 100755 index 0000000..0d0ade7 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glplugin-support-video-crop-for-glimagesink.patch @@ -0,0 +1,155 @@ +From 1a917447c3749f0a6d3ff98b8dcbc7439b48293d Mon Sep 17 00:00:00 2001 +From: Haihua Hu +Date: Fri, 13 Nov 2015 10:51:25 +0800 +Subject: [PATCH] [glplugin] support video crop for glimagesink + +1.Add video crop meta copy in glupload +2.Calculate the new texture coordinate in vertices array and bind to buffer object +3.Make glimagesink only updating vertices array when video crop meta changed + +Upstream-Status: Inappropriate [i.MX specific] + +Signed-off-by: Haihua Hu +--- + ext/gl/gstglimagesink.c | 53 ++++++++++++++++++++++++++++++++++++++++- + ext/gl/gstglimagesink.h | 3 +++ + gst-libs/gst/gl/gstglupload.c | 10 ++++++++ + 3 files changed, 65 insertions(+), 1 deletion(-) + +diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c +index 1e5dc05..6fc0f9e 100644 +--- a/ext/gl/gstglimagesink.c ++++ b/ext/gl/gstglimagesink.c +@@ -585,6 +585,8 @@ gst_glimage_sink_init (GstGLImageSink * glimage_sink) + glimage_sink->handle_events = TRUE; + glimage_sink->ignore_alpha = TRUE; + glimage_sink->overlay_compositor = NULL; ++ glimage_sink->cropmeta = NULL; ++ glimage_sink->prev_cropmeta = NULL; + + glimage_sink->mview_output_mode = DEFAULT_MULTIVIEW_MODE; + glimage_sink->mview_output_flags = DEFAULT_MULTIVIEW_FLAGS; +@@ -1039,6 +1041,12 @@ gst_glimage_sink_change_state (GstElement * element, GstStateChange transition) + gst_object_unref (glimage_sink->display); + glimage_sink->display = NULL; + } ++ ++ glimage_sink->cropmeta = NULL; ++ if (glimage_sink->prev_cropmeta) ++ g_slice_free(GstVideoCropMeta, glimage_sink->prev_cropmeta); ++ glimage_sink->prev_cropmeta = NULL; ++ + break; + default: + break; +@@ -1452,6 +1460,8 @@ gst_glimage_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf) + GST_VIDEO_SINK_WIDTH (glimage_sink), + GST_VIDEO_SINK_HEIGHT (glimage_sink)); + ++ glimage_sink->cropmeta = gst_buffer_get_video_crop_meta (buf); ++ + /* Ask the underlying window to redraw its content */ + if (!gst_glimage_sink_redisplay (glimage_sink)) + goto redisplay_failed; +@@ -1638,7 +1648,7 @@ config_failed: + } + + /* *INDENT-OFF* */ +-static const GLfloat vertices[] = { ++static GLfloat vertices[] = { + 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 0.0f, 0.0f, + -1.0f, -1.0f, 0.0f, 0.0f, 1.0f, +@@ -1898,6 +1908,47 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink) + + gst_gl_shader_use (gl_sink->redisplay_shader); + ++ if (gl_sink->cropmeta) { ++ gint width = GST_VIDEO_SINK_WIDTH (gl_sink); ++ gint height = GST_VIDEO_SINK_HEIGHT (gl_sink); ++ ++ if (!gl_sink->prev_cropmeta){ ++ /* Initialize the previous crop meta and set all memroy to zero */ ++ gl_sink->prev_cropmeta = (GstVideoCropMeta *) g_slice_new0(GstVideoCropMeta); ++ } ++ ++ /* If crop meta not equal to the previous, recalculate the vertices */ ++ if (gl_sink->prev_cropmeta->x != gl_sink->cropmeta->x ++ || gl_sink->prev_cropmeta->y != gl_sink->cropmeta->y ++ || gl_sink->prev_cropmeta->width != gl_sink->cropmeta->width ++ || gl_sink->prev_cropmeta->height != gl_sink->cropmeta->height){ ++ ++ vertices[8] = (float)(gl_sink->cropmeta->x) / width; ++ vertices[9] = (float)(gl_sink->cropmeta->y) / height; ++ ++ vertices[3] = (float)(gl_sink->cropmeta->width + gl_sink->cropmeta->x) / width; ++ vertices[4] = vertices[9]; ++ ++ vertices[13] = vertices[8]; ++ vertices[14] = (float)(gl_sink->cropmeta->height + gl_sink->cropmeta->y) / height; ++ ++ vertices[18] = vertices[3]; ++ vertices[19] = vertices[14]; ++ ++ gl->BindBuffer (GL_ARRAY_BUFFER, gl_sink->vertex_buffer); ++ gl->BufferData (GL_ARRAY_BUFFER, 4 * 5 * sizeof (GLfloat), vertices, ++ GL_STATIC_DRAW); ++ ++ gl->BindBuffer (GL_ARRAY_BUFFER, 0); ++ ++ /* Store the previous crop meta */ ++ gl_sink->prev_cropmeta->x = gl_sink->cropmeta->x; ++ gl_sink->prev_cropmeta->y = gl_sink->cropmeta->y; ++ gl_sink->prev_cropmeta->width = gl_sink->cropmeta->width; ++ gl_sink->prev_cropmeta->height = gl_sink->cropmeta->height; ++ } ++ } ++ + if (gl->GenVertexArrays) + gl->BindVertexArray (gl_sink->vao); + else +diff --git a/ext/gl/gstglimagesink.h b/ext/gl/gstglimagesink.h +index f7b3bfb..a26ca4b 100644 +--- a/ext/gl/gstglimagesink.h ++++ b/ext/gl/gstglimagesink.h +@@ -102,6 +102,9 @@ struct _GstGLImageSink + guint window_width; + guint window_height; + ++ GstVideoCropMeta *cropmeta; ++ GstVideoCropMeta *prev_cropmeta; ++ + GstVideoRectangle display_rect; + + GstGLShader *redisplay_shader; +diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c +index acaa329..0d36248 100644 +--- a/gst-libs/gst/gl/gstglupload.c ++++ b/gst-libs/gst/gl/gstglupload.c +@@ -756,6 +756,7 @@ _physical_buffer_upload_perform(gpointer impl, GstBuffer *buffer, GstBuffer **ou + { + struct PhyBufferUpload *phyBuffer = impl; + GstVideoInfo *info; ++ GstVideoCropMeta *incropmeta, *outcropmeta; + gint n_mem; + + info = &phyBuffer->upload->priv->out_info; +@@ -774,6 +775,15 @@ _physical_buffer_upload_perform(gpointer impl, GstBuffer *buffer, GstBuffer **ou + gst_buffer_add_video_meta_full (*outbuf, 0, + GST_VIDEO_INFO_FORMAT (info), GST_VIDEO_INFO_WIDTH (info), + GST_VIDEO_INFO_HEIGHT (info), n_mem, info->offset, info->stride); ++ /* add video crop meta to out buffer if need */ ++ incropmeta = gst_buffer_get_video_crop_meta(buffer); ++ if(incropmeta){ ++ outcropmeta = gst_buffer_add_video_crop_meta(*outbuf); ++ outcropmeta->x = incropmeta->x; ++ outcropmeta->y = incropmeta->y; ++ outcropmeta->width = incropmeta->width; ++ outcropmeta->height = incropmeta->height; ++ } + + return GST_GL_UPLOAD_DONE; + } +-- +1.7.9.5 + diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend index 0728009..9ce22eb 100644 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend @@ -12,6 +12,7 @@ PACKAGECONFIG_GL_mx6sl = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', \ IMX_PATCHES = " file://0001-PATCH-install-gstaggregator-and-gstvideoaggregator-h.patch \ file://0002-glplugin-Add-directviv-to-glimagesink-to-improve-playback-performance.patch \ + file://0003-glplugin-support-video-crop-for-glimagesink.patch \ " SRC_URI_append_mx6 = "${IMX_PATCHES}" -- 1.9.1