[meta-ti] [krogoth][PATCH 3/3] gstreamer1.0-plugins-bad: waylandsink: add input format I420 support
Ruei, Eric
e-ruei1 at ti.com
Thu Mar 16 10:32:09 PDT 2017
Nak
Denys: can you ignore this series? I meant to send to meta-arago.
Eric
-----Original Message-----
From: meta-ti-bounces at yoctoproject.org [mailto:meta-ti-bounces at yoctoproject.org] On Behalf Of Ruei, Eric
Sent: Thursday, March 16, 2017 1:27 PM
To: meta-ti at yoctoproject.org
Subject: [meta-ti] [krogoth][PATCH 3/3] gstreamer1.0-plugins-bad: waylandsink: add input format I420 support
Signed-off-by: Eric Ruei <e-ruei1 at ti.com>
---
...waylandsink-add-input-format-I420-support.patch | 89 ++++++++++++++++++++++
.../gstreamer1.0-plugins-bad_1.6.3.bbappend | 2 +
2 files changed, 91 insertions(+)
create mode 100644 meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gstwaylandsink-add-input-format-I420-support.patch
diff --git a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gstwaylandsink-add-input-format-I420-support.patch b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gstwaylandsink-add-input-format-I420-support.patch
new file mode 100644
index 0000000..c4bf4b1
--- /dev/null
+++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugin
+++ s-bad/0001-gstwaylandsink-add-input-format-I420-support.patch
@@ -0,0 +1,89 @@
+From 4d04ea92f196b9e0880917cf029a95c9ebef0ea9 Mon Sep 17 00:00:00 2001
+From: Eric Ruei <e-ruei1 at ti.com>
+Date: Wed, 22 Feb 2017 10:49:01 -0500
+Subject: [PATCH] gstwaylandsink: add input format I420 support
+
+The software-based video decoder produces the output in I420 format. To
+display the output without additional ARM MHz consumed in video format
+conversion, the function gst_wl_memory_construct_wl_buffer is enhanced to support I420 format.
+
+Signed-off-by: Eric Ruei <e-ruei1 at ti.com>
+---
+ ext/wayland/wldrm.c | 41 ++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 34 insertions(+), 7 deletions(-)
+
+diff --git a/ext/wayland/wldrm.c b/ext/wayland/wldrm.c index
+8f2c393..cb2b0f2 100644
+--- a/ext/wayland/wldrm.c
++++ b/ext/wayland/wldrm.c
+@@ -5,33 +5,60 @@
+ #include <omap_drmif.h>
+ #include <wayland-client.h>
+
++GST_DEBUG_CATEGORY_EXTERN (gstwayland_debug); #define GST_CAT_DEFAULT
++gstwayland_debug
++
++
+ struct wl_buffer *
+ gst_wl_drm_memory_construct_wl_buffer (GstMemory * mem, GstWlDisplay * display,
+ const GstVideoInfo * info)
+ {
+ gint video_width = GST_VIDEO_INFO_WIDTH (info);
+ gint video_height = GST_VIDEO_INFO_HEIGHT (info);
++ GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info);
+ int fd = -1;
+ struct omap_bo *bo;
+ struct wl_buffer *buffer;
+-
+- /* TODO get format, etc from caps.. and query device for
+- * supported formats, and make this all more flexible to
+- * cope with various formats:
+- */
+- uint32_t fourcc = GST_MAKE_FOURCC ('N', 'V', '1', '2');
++ uint32_t fourcc;
+ uint32_t name;
+ /* note: wayland and mesa use the terminology:
+ * stride - rowstride in bytes
+ * pitch - rowstride in pixels
+ */
+ uint32_t strides[3] = {
+- GST_ROUND_UP_4 (video_width), GST_ROUND_UP_4 (video_width), 0,
++ GST_ROUND_UP_4 (video_width), 0, 0,
+ };
+ uint32_t offsets[3] = {
+ 0, strides[0] * video_height, 0
+ };
+
++ if (format == GST_VIDEO_FORMAT_NV12) {
++ /* NV12 */
++ fourcc = GST_MAKE_FOURCC ('N', 'V', '1', '2');
++ strides[1] = GST_ROUND_UP_4 (video_width); } else if(format ==
++ GST_VIDEO_FORMAT_I420) {
++ /* YUV420 */
++ fourcc = GST_MAKE_FOURCC ('Y', 'U', '1', '2');
++ strides[1] = strides[2] = GST_ROUND_UP_4 (video_width/2);
++ offsets[2] = offsets[1] + strides[1] * video_height/2; } else {
++
++ GST_DEBUG ("Unsupported video format: %d", format);
++ /*
++ * There are two xRGB frames with width and height = 1 required in the begining of a video stream.
++ * If we consider them as errot, then it will case libwayland-clent.so crashes
++ * due to invalid error handling.
++ * Consider them as NV12 until we can figure out a better solution
++ */
++ fourcc = GST_MAKE_FOURCC ('N', 'V', '1', '2');
++ strides[1] = GST_ROUND_UP_4 (video_width); }
++
+ fd = gst_fd_memory_get_fd (mem);
+
+ if (fd < 0 ) {
+--
+1.9.1
+
diff --git a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bbappend b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bbappend
index 317b19e..bbd1d99 100644
--- a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bbappend
+++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugin
+++ s-bad_1.6.3.bbappend
@@ -22,11 +22,13 @@ DEPENDS_append_ti33x = " \
SRC_URI_append_omap-a15 = " \
file://0001-kmssink-remove-DCE-dependencies.patch \
file://0002-kmssink-add-YUYV-support.patch \
+ file://0001-gstwaylandsink-add-input-format-I420-support.patch \
"
SRC_URI_append_ti43x = " \
file://0001-kmssink-remove-DCE-dependencies.patch \
file://0002-kmssink-add-YUYV-support.patch \
+ file://0001-gstwaylandsink-add-input-format-I420-support.patch \
"
SRC_URI_append_ti33x = " \
--
1.9.1
--
_______________________________________________
meta-ti mailing list
meta-ti at yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-ti
More information about the meta-ti
mailing list