path: root/recipes-qt
diff options
authorEric Nelson <eric.nelson@boundarydevices.com>2013-08-19 14:13:29 +0000
committerOtavio Salvador <otavio@ossystems.com.br>2013-08-24 14:46:18 -0300
commit0c905f1581f331f3156206fa5851b3779445b970 (patch)
tree5778bdcd940660a30dec47cbcbe2f41d46b79137 /recipes-qt
parent4c291af7056e44ffb997fccd95342caef7fd7c19 (diff)
qt4-embedded: Allow use of Qt Media Player in multi-headed system
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>
Diffstat (limited to 'recipes-qt')
2 files changed, 50 insertions, 1 deletions
diff --git a/recipes-qt/qt4/qt4-embedded_4.8.5.bbappend b/recipes-qt/qt4/qt4-embedded_4.8.5.bbappend
index 4c4d0c9..fc16670 100644
--- a/recipes-qt/qt4/qt4-embedded_4.8.5.bbappend
+++ b/recipes-qt/qt4/qt4-embedded_4.8.5.bbappend
@@ -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"
diff --git a/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch b/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch
new file mode 100644
index 0000000..0226db5
--- /dev/null
+++ b/recipes-qt/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch
@@ -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