]> code.ossystems Code Review - meta-freescale.git/commitdiff
qt4-embedded: Allow use of Qt Media Player in multi-headed system
authorEric Nelson <eric.nelson@boundarydevices.com>
Mon, 19 Aug 2013 14:13:29 +0000 (14:13 +0000)
committerOtavio Salvador <otavio@ossystems.com.br>
Sat, 24 Aug 2013 17:46:18 +0000 (14:46 -0300)
Qt-embedded can be used on multiple screens by using environment variables
QWS_DISPLAY, QWS_MOUSE_PROTO, et cetera.

The gstreamer element mfw_v4lsink used to accelerate media playback on i.MX
devices can also be pointed at different displays through the 'device'
property, but the current acceleration patch doesn't have a mechanism for
setting the property, and always uses the compiled-in default.

This patch allows userspace startup code to override the default through
the use of the 'v4lsinkdev' environment variable.

Please refer to the Qt4-embedded documentation for proper usage of the
QWS_x environment variables and the Freescale Multimedia documentation
for descriptions of the various gstreamer elements.

A sequence of this for a secondary display might be this:

export QWS_DISPLAY=linuxfb:/dev/fb2:1
export v4lsinkdev=/dev/video19
my-qt-app -qws

Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
meta-fsl-arm/recipes-qt/qt4/qt4-embedded_4.8.5.bbappend
meta-fsl-arm/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch [new file with mode: 0644]

index 4c4d0c9eb0a7b18ea14b121517900c27bd532c8b..fc16670811484ad666d1e94087e7d219b8c9f3d5 100644 (file)
@@ -2,7 +2,10 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/qt4:"
 
 SRC_URI_append_mx5 += "file://0001-Add-support-for-i.MX-codecs-to-phonon.patch"
-SRC_URI_append_mx6 += "file://0001-Add-support-for-i.MX-codecs-to-phonon.patch"
+SRC_URI_append_mx6 += " \
+       file://0001-Add-support-for-i.MX-codecs-to-phonon.patch \
+       file://0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch \
+"
 
 DEPENDS_append_mx5 = " virtual/kernel virtual/libgles2"
 PACKAGE_ARCH_mx5 = "${MACHINE_ARCH}"
diff --git a/meta-fsl-arm/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch b/meta-fsl-arm/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch
new file mode 100644 (file)
index 0000000..0226db5
--- /dev/null
@@ -0,0 +1,46 @@
+From 023befba9aad60ef58177fd987a6aa40c357b2b2 Mon Sep 17 00:00:00 2001
+From: Eric Nelson <eric.nelson@boundarydevices.com>
+Date: Fri, 16 Aug 2013 11:42:23 -0700
+Subject: [PATCH] i.MX video renderer: Allow v4l device from environment
+
+The i.MX6 supports multiple IPUs and multiple V4L2 output
+devices for each.
+
+Devices are numbered starting with /dev/video16 and defined
+for each configured display. In general, /dev/video16 will
+correspond to the RGB (background) layer for /dev/fb0.
+If a display is the first on an IPU, an additional V4L2
+output will be defined that corresponds to the normally
+YUV overlay (foreground) layer.
+
+This patch allows association of the proper device for
+a particular session for use in multi-headed applications.
+The default is /dev/video17:
+       export v4lsinkdev=/dev/video17
+
+Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
+---
+ src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+index aa4925a..a502ccd 100644
+--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
++++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+@@ -58,9 +58,12 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
+         : AbstractRenderer(videoWidget)
+ {
+     if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) {
+-      
++      char *videodev;
+       gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
+         gst_object_sink (GST_OBJECT (m_videoSink));
++      videodev=getenv("v4lsinkdev");
++      if (videodev)
++                g_object_set (G_OBJECT (m_videoSink), "device", videodev, NULL);
+     }
+     // Clear the background with black by default
+-- 
+1.8.1.2
+