diff options
Diffstat (limited to 'recipes-qt')
-rw-r--r-- | recipes-qt/qt4/qt4-embedded_4.8.1.bbappend (renamed from recipes-qt/qt4/qt4-embedded_4.7.4.bbappend) | 0 | ||||
-rw-r--r-- | recipes-qt/qt4/qt4-x11-free_4.8.1.bbappend (renamed from recipes-qt/qt4/qt4-x11-free_4.7.4.bbappend) | 2 | ||||
-rw-r--r-- | recipes-qt/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch | 173 |
3 files changed, 91 insertions, 84 deletions
diff --git a/recipes-qt/qt4/qt4-embedded_4.7.4.bbappend b/recipes-qt/qt4/qt4-embedded_4.8.1.bbappend index 70d890f..70d890f 100644 --- a/recipes-qt/qt4/qt4-embedded_4.7.4.bbappend +++ b/recipes-qt/qt4/qt4-embedded_4.8.1.bbappend | |||
diff --git a/recipes-qt/qt4/qt4-x11-free_4.7.4.bbappend b/recipes-qt/qt4/qt4-x11-free_4.8.1.bbappend index cebb203..70d890f 100644 --- a/recipes-qt/qt4/qt4-x11-free_4.7.4.bbappend +++ b/recipes-qt/qt4/qt4-x11-free_4.8.1.bbappend | |||
@@ -7,4 +7,4 @@ SRC_URI_append_mx6 += "file://0001-Add-support-for-i.MX-codecs-to-phonon.patch" | |||
7 | PACKAGE_ARCH_mx5 = "${MACHINE_ARCH}" | 7 | PACKAGE_ARCH_mx5 = "${MACHINE_ARCH}" |
8 | PACKAGE_ARCH_mx6 = "${MACHINE_ARCH}" | 8 | PACKAGE_ARCH_mx6 = "${MACHINE_ARCH}" |
9 | 9 | ||
10 | PRINC := "${@int(PRINC) + 1}" | 10 | PRINC := "${@int(PRINC) + 2}" |
diff --git a/recipes-qt/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch b/recipes-qt/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch index 077939b..fd6483d 100644 --- a/recipes-qt/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch +++ b/recipes-qt/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch | |||
@@ -1,6 +1,6 @@ | |||
1 | From d46b70c7679e6706a001771c322185fcc95a981c Mon Sep 17 00:00:00 2001 | 1 | From 2ff5682e42771519757756dedbf27b7a9e8e25d9 Mon Sep 17 00:00:00 2001 |
2 | From: Rogerio Pimentel <rogerio.pimentel@freescale.com> | 2 | From: Rogerio Pimentel <rogerio.pimentel@freescale.com> |
3 | Date: Mon, 4 Jun 2012 14:25:31 -0300 | 3 | Date: Tue, 24 Jul 2012 13:47:01 -0300 |
4 | Subject: [PATCH] Add support for i.MX codecs to phonon | 4 | Subject: [PATCH] Add support for i.MX codecs to phonon |
5 | 5 | ||
6 | Add support for i.MX codecs to phonon | 6 | Add support for i.MX codecs to phonon |
@@ -10,15 +10,15 @@ Signed-off-by: Rogerio Pimentel <rogerio.pimentel@freescale.com> | |||
10 | --- | 10 | --- |
11 | src/3rdparty/phonon/gstreamer/abstractrenderer.h | 1 + | 11 | src/3rdparty/phonon/gstreamer/abstractrenderer.h | 1 + |
12 | src/3rdparty/phonon/gstreamer/mediaobject.cpp | 4 + | 12 | src/3rdparty/phonon/gstreamer/mediaobject.cpp | 4 + |
13 | src/3rdparty/phonon/gstreamer/videowidget.cpp | 57 ++------ | 13 | src/3rdparty/phonon/gstreamer/videowidget.cpp | 60 ++------ |
14 | src/3rdparty/phonon/gstreamer/videowidget.h | 1 + | 14 | src/3rdparty/phonon/gstreamer/videowidget.h | 1 + |
15 | src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 166 +++++++++++++--------- | 15 | src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 169 ++++++++++++++-------- |
16 | src/3rdparty/phonon/gstreamer/widgetrenderer.h | 17 ++- | 16 | src/3rdparty/phonon/gstreamer/widgetrenderer.h | 17 ++- |
17 | src/3rdparty/phonon/gstreamer/x11renderer.cpp | 23 +--- | 17 | src/3rdparty/phonon/gstreamer/x11renderer.cpp | 22 +--- |
18 | 7 files changed, 136 insertions(+), 133 deletions(-) | 18 | 7 files changed, 141 insertions(+), 133 deletions(-) |
19 | 19 | ||
20 | diff --git a/src/3rdparty/phonon/gstreamer/abstractrenderer.h b/src/3rdparty/phonon/gstreamer/abstractrenderer.h | 20 | diff --git a/src/3rdparty/phonon/gstreamer/abstractrenderer.h b/src/3rdparty/phonon/gstreamer/abstractrenderer.h |
21 | index 10a2822..4901530 100644 | 21 | index 10a2822..fa0d87d 100644 |
22 | --- a/src/3rdparty/phonon/gstreamer/abstractrenderer.h | 22 | --- a/src/3rdparty/phonon/gstreamer/abstractrenderer.h |
23 | +++ b/src/3rdparty/phonon/gstreamer/abstractrenderer.h | 23 | +++ b/src/3rdparty/phonon/gstreamer/abstractrenderer.h |
24 | @@ -49,6 +49,7 @@ public: | 24 | @@ -49,6 +49,7 @@ public: |
@@ -52,19 +52,14 @@ index 23a60c0..f806d64 100644 | |||
52 | GstPad *videopad = gst_element_get_pad (m_videoPipe, "sink"); | 52 | GstPad *videopad = gst_element_get_pad (m_videoPipe, "sink"); |
53 | gst_element_add_pad (m_videoGraph, gst_ghost_pad_new ("sink", videopad)); | 53 | gst_element_add_pad (m_videoGraph, gst_ghost_pad_new ("sink", videopad)); |
54 | diff --git a/src/3rdparty/phonon/gstreamer/videowidget.cpp b/src/3rdparty/phonon/gstreamer/videowidget.cpp | 54 | diff --git a/src/3rdparty/phonon/gstreamer/videowidget.cpp b/src/3rdparty/phonon/gstreamer/videowidget.cpp |
55 | index e1f0ec9..6c9862b 100644 | 55 | index a4c6f79..3682d3f 100644 |
56 | --- a/src/3rdparty/phonon/gstreamer/videowidget.cpp | 56 | --- a/src/3rdparty/phonon/gstreamer/videowidget.cpp |
57 | +++ b/src/3rdparty/phonon/gstreamer/videowidget.cpp | 57 | +++ b/src/3rdparty/phonon/gstreamer/videowidget.cpp |
58 | @@ -81,48 +81,17 @@ void VideoWidget::setupVideoBin() | 58 | @@ -83,50 +83,16 @@ void VideoWidget::setupVideoBin() |
59 | Q_ASSERT(m_videoBin); | 59 | Q_ASSERT(m_videoBin); |
60 | gst_object_ref (GST_OBJECT (m_videoBin)); //Take ownership | 60 | gst_object_ref (GST_OBJECT (m_videoBin)); //Take ownership |
61 | gst_object_sink (GST_OBJECT (m_videoBin)); | 61 | gst_object_sink (GST_OBJECT (m_videoBin)); |
62 | + gst_bin_add_many (GST_BIN (m_videoBin), videoSink, NULL); | 62 | - |
63 | + GstPad *videopad = gst_element_get_pad (videoSink,"sink"); | ||
64 | + gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad)); | ||
65 | + gst_object_unref (videopad); | ||
66 | + QWidget *parentWidget = qobject_cast<QWidget*>(parent()); | ||
67 | |||
68 | - //The videoplug element is the final element before the pluggable videosink | 63 | - //The videoplug element is the final element before the pluggable videosink |
69 | - m_videoplug = gst_element_factory_make ("identity", NULL); | 64 | - m_videoplug = gst_element_factory_make ("identity", NULL); |
70 | - | 65 | - |
@@ -94,26 +89,34 @@ index e1f0ec9..6c9862b 100644 | |||
94 | - //If video balance is not available, just connect to sink directly | 89 | - //If video balance is not available, just connect to sink directly |
95 | - success = gst_element_link_many(queue, m_colorspace, videoScale, m_videoplug, videoSink, (const char*)NULL); | 90 | - success = gst_element_link_many(queue, m_colorspace, videoScale, m_videoplug, videoSink, (const char*)NULL); |
96 | - } | 91 | - } |
97 | + if (parentWidget) | 92 | - |
98 | + parentWidget->winId(); // Due to some existing issues with alien in 4.4, | ||
99 | + // we must currently force the creation of a parent widget. | ||
100 | + m_isValid = true; //initialization ok, accept input | ||
101 | |||
102 | - if (success) { | 93 | - if (success) { |
103 | - GstPad *videopad = gst_element_get_pad (queue, "sink"); | 94 | - GstPad *videopad = gst_element_get_pad (queue, "sink"); |
104 | - gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad)); | 95 | - gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad)); |
105 | - gst_object_unref (videopad); | 96 | - gst_object_unref (videopad); |
97 | -#ifndef Q_WS_QPA | ||
106 | - QWidget *parentWidget = qobject_cast<QWidget*>(parent()); | 98 | - QWidget *parentWidget = qobject_cast<QWidget*>(parent()); |
107 | - if (parentWidget) | 99 | - if (parentWidget) |
108 | - parentWidget->winId(); // Due to some existing issues with alien in 4.4, | 100 | - parentWidget->winId(); // Due to some existing issues with alien in 4.4, |
109 | - // we must currently force the creation of a parent widget. | 101 | - // we must currently force the creation of a parent widget. |
102 | -#endif | ||
110 | - m_isValid = true; //initialization ok, accept input | 103 | - m_isValid = true; //initialization ok, accept input |
111 | - } | 104 | - } |
112 | - } | 105 | - } |
106 | + gst_bin_add_many (GST_BIN (m_videoBin), videoSink, NULL); | ||
107 | + GstPad *videopad = gst_element_get_pad (videoSink,"sink"); | ||
108 | + gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad)); | ||
109 | + gst_object_unref (videopad); | ||
110 | + QWidget *parentWidget = qobject_cast<QWidget*>(parent()); | ||
111 | + | ||
112 | + if (parentWidget) | ||
113 | + parentWidget->winId(); // Due to some existing issues with alien in 4.4, | ||
114 | + // we must currently force the creation of a parent widget. | ||
115 | + m_isValid = true; //initialization ok, accept input | ||
113 | } | 116 | } |
114 | 117 | ||
115 | void VideoWidget::paintEvent(QPaintEvent *event) | 118 | void VideoWidget::paintEvent(QPaintEvent *event) |
116 | @@ -131,6 +100,12 @@ void VideoWidget::paintEvent(QPaintEvent *event) | 119 | @@ -135,6 +101,12 @@ void VideoWidget::paintEvent(QPaintEvent *event) |
117 | m_renderer->handlePaint(event); | 120 | m_renderer->handlePaint(event); |
118 | } | 121 | } |
119 | 122 | ||
@@ -139,7 +142,7 @@ index 8603f6a..38c7b17 100644 | |||
139 | QRect scaleToAspect(QRect srcRect, int w, int h) const; | 142 | QRect scaleToAspect(QRect srcRect, int w, int h) const; |
140 | QRect calculateDrawFrameRect() const; | 143 | QRect calculateDrawFrameRect() const; |
141 | diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 144 | diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp |
142 | index 423af9d..de524ec 100644 | 145 | index 423af9d..aa4925a 100644 |
143 | --- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 146 | --- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp |
144 | +++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 147 | +++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp |
145 | @@ -15,7 +15,9 @@ | 148 | @@ -15,7 +15,9 @@ |
@@ -152,7 +155,7 @@ index 423af9d..de524ec 100644 | |||
152 | #include <gst/gst.h> | 155 | #include <gst/gst.h> |
153 | #include "common.h" | 156 | #include "common.h" |
154 | #include "message.h" | 157 | #include "message.h" |
155 | @@ -24,6 +26,19 @@ | 158 | @@ -24,6 +26,18 @@ |
156 | #include "widgetrenderer.h" | 159 | #include "widgetrenderer.h" |
157 | #include "qrgb.h" | 160 | #include "qrgb.h" |
158 | 161 | ||
@@ -163,7 +166,6 @@ index 423af9d..de524ec 100644 | |||
163 | +#include <fcntl.h> | 166 | +#include <fcntl.h> |
164 | +#include <sys/ioctl.h> | 167 | +#include <sys/ioctl.h> |
165 | +#include <unistd.h> | 168 | +#include <unistd.h> |
166 | + | ||
167 | +#include <linux/mxcfb.h> | 169 | +#include <linux/mxcfb.h> |
168 | + | 170 | + |
169 | +#define MXCFB_GBL_ALPHA 255 | 171 | +#define MXCFB_GBL_ALPHA 255 |
@@ -172,7 +174,7 @@ index 423af9d..de524ec 100644 | |||
172 | // support old OpenGL installations (1.2) | 174 | // support old OpenGL installations (1.2) |
173 | // assume that if TEXTURE0 isn't defined, none are | 175 | // assume that if TEXTURE0 isn't defined, none are |
174 | #ifndef GL_TEXTURE0 | 176 | #ifndef GL_TEXTURE0 |
175 | @@ -35,26 +50,6 @@ | 177 | @@ -35,26 +49,6 @@ |
176 | #ifndef QT_NO_PHONON_VIDEO | 178 | #ifndef QT_NO_PHONON_VIDEO |
177 | QT_BEGIN_NAMESPACE | 179 | QT_BEGIN_NAMESPACE |
178 | 180 | ||
@@ -199,7 +201,7 @@ index 423af9d..de524ec 100644 | |||
199 | namespace Phonon | 201 | namespace Phonon |
200 | { | 202 | { |
201 | namespace Gstreamer | 203 | namespace Gstreamer |
202 | @@ -62,20 +57,12 @@ namespace Gstreamer | 204 | @@ -62,17 +56,11 @@ namespace Gstreamer |
203 | 205 | ||
204 | WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget) | 206 | WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget) |
205 | : AbstractRenderer(videoWidget) | 207 | : AbstractRenderer(videoWidget) |
@@ -210,6 +212,7 @@ index 423af9d..de524ec 100644 | |||
210 | - if ((m_videoSink = GST_ELEMENT(g_object_new(get_type_RGB(), NULL)))) { | 212 | - if ((m_videoSink = GST_ELEMENT(g_object_new(get_type_RGB(), NULL)))) { |
211 | - gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership | 213 | - gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership |
212 | + if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) { | 214 | + if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) { |
215 | + | ||
213 | + gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership | 216 | + gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership |
214 | gst_object_sink (GST_OBJECT (m_videoSink)); | 217 | gst_object_sink (GST_OBJECT (m_videoSink)); |
215 | - | 218 | - |
@@ -218,11 +221,8 @@ index 423af9d..de524ec 100644 | |||
218 | - sink->renderWidget = videoWidget; | 221 | - sink->renderWidget = videoWidget; |
219 | } | 222 | } |
220 | 223 | ||
221 | - // Clear the background with black by default | 224 | // Clear the background with black by default |
222 | QPalette palette; | 225 | @@ -84,67 +72,124 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget) |
223 | palette.setColor(QPalette::Background, Qt::black); | ||
224 | m_videoWidget->setPalette(palette); | ||
225 | @@ -84,65 +71,116 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget) | ||
226 | m_videoWidget->setAttribute(Qt::WA_PaintOnScreen, false); | 226 | m_videoWidget->setAttribute(Qt::WA_PaintOnScreen, false); |
227 | } | 227 | } |
228 | 228 | ||
@@ -231,35 +231,35 @@ index 423af9d..de524ec 100644 | |||
231 | { | 231 | { |
232 | - if (m_videoWidget->root()->state() == Phonon::LoadingState) | 232 | - if (m_videoWidget->root()->state() == Phonon::LoadingState) |
233 | - return; | 233 | - return; |
234 | + if (m_videoSink) { | 234 | - |
235 | - m_frame = QImage(); | ||
236 | - { | ||
237 | - m_frame = QImage((uchar *)array.constData(), w, h, QImage::Format_RGB32); | ||
238 | - } | ||
239 | + if (m_videoSink) { | ||
235 | + gst_object_unref (GST_OBJECT (m_videoSink)); | 240 | + gst_object_unref (GST_OBJECT (m_videoSink)); |
236 | + m_videoSink = 0; | 241 | + m_videoSink = 0; |
237 | + } | 242 | + } |
238 | +} | 243 | +} |
239 | 244 | ||
240 | - m_frame = QImage(); | 245 | - m_array = array; |
241 | - { | 246 | - m_width = w; |
242 | - m_frame = QImage((uchar *)array.constData(), w, h, QImage::Format_RGB32); | 247 | - m_height = h; |
243 | - } | ||
244 | +void WidgetRenderer::setVideoSize(void) | 248 | +void WidgetRenderer::setVideoSize(void) |
245 | +{ | 249 | +{ |
246 | + | 250 | |
251 | - m_videoWidget->update(); | ||
247 | + int adj_x; | 252 | + int adj_x; |
248 | + int adj_y; | 253 | + int adj_y; |
249 | + | 254 | + |
250 | + QSize wSize = m_videoWidget->size(); | 255 | + QSize wSize = m_videoWidget->size(); |
251 | + m_drawFrameRect = m_videoWidget->calculateDrawFrameRect(); | 256 | + m_drawFrameRect = m_videoWidget->calculateDrawFrameRect(); |
252 | + framePos = m_videoWidget->mapToGlobal(QPoint(0,0)); | 257 | + framePos = m_videoWidget->mapToGlobal(QPoint(0,0)); |
253 | 258 | + | |
254 | - m_array = array; | ||
255 | - m_width = w; | ||
256 | - m_height = h; | ||
257 | + //Center the video in the widget | 259 | + //Center the video in the widget |
258 | |||
259 | - m_videoWidget->update(); | ||
260 | + adj_x = (wSize.width()/2) - (m_drawFrameRect.width()/2); | ||
261 | + adj_y = (wSize.height()/2) - (m_drawFrameRect.height()/2); | ||
262 | + | 260 | + |
261 | + adj_x = (wSize.width()/2) - (m_drawFrameRect.width()/2); | ||
262 | + adj_y = (wSize.height()/2) - (m_drawFrameRect.height()/2); | ||
263 | + g_object_set(G_OBJECT(m_videoSink), "axis-left",adj_x + framePos.x(),(const char*)NULL); | 263 | + g_object_set(G_OBJECT(m_videoSink), "axis-left",adj_x + framePos.x(),(const char*)NULL); |
264 | + g_object_set(G_OBJECT(m_videoSink), "axis-top", adj_y + framePos.y(), (const char*)NULL); | 264 | + g_object_set(G_OBJECT(m_videoSink), "axis-top", adj_y + framePos.y(), (const char*)NULL); |
265 | + g_object_set(G_OBJECT(m_videoSink), "disp-width", m_drawFrameRect.width(), (const char*)NULL); | 265 | + g_object_set(G_OBJECT(m_videoSink), "disp-width", m_drawFrameRect.width(), (const char*)NULL); |
@@ -295,30 +295,34 @@ index 423af9d..de524ec 100644 | |||
295 | +int WidgetRenderer::setOverlay(void) | 295 | +int WidgetRenderer::setOverlay(void) |
296 | { | 296 | { |
297 | - return m_frame; | 297 | - return m_frame; |
298 | + struct mxcfb_color_key color_key; | 298 | + struct mxcfb_color_key color_key; |
299 | + struct mxcfb_gbl_alpha alpha; | 299 | + struct mxcfb_gbl_alpha alpha; |
300 | + int fd_fb; | 300 | + int fd_fb; |
301 | + | ||
302 | + if ((fd_fb = open("/dev/fb0", O_RDWR, 0)) < 0) | ||
303 | + { | ||
304 | + printf("Unable to open %s\n", "/dev/fb0"); | ||
305 | + return -1; | ||
306 | + | ||
307 | + } | ||
308 | + | ||
309 | + alpha.alpha = MXCFB_GBL_ALPHA; | ||
310 | + alpha.enable = 1; | ||
301 | + | 311 | + |
302 | + if ((fd_fb = open("/dev/fb0", O_RDWR, 0)) < 0) | 312 | + if (ioctl(fd_fb, MXCFB_SET_GBL_ALPHA, &alpha) < 0) { |
303 | + { | 313 | + printf("Error in applying Alpha\n"); |
304 | + printf("Unable to open %s\n", "/dev/fb0"); | 314 | + } |
305 | + return -1; | ||
306 | + } | ||
307 | + | ||
308 | + alpha.alpha = MXCFB_GBL_ALPHA; | ||
309 | + alpha.enable = 1; | ||
310 | + | ||
311 | + if (ioctl(fd_fb, MXCFB_SET_GBL_ALPHA, &alpha) < 0) { | ||
312 | + printf("Error in applying Alpha\n"); | ||
313 | + } | ||
314 | + | 315 | + |
315 | + color_key.color_key = MXCFB_CLR_KEY & 0x00FFFFFF; | 316 | + color_key.color_key = MXCFB_CLR_KEY & 0x00FFFFFF; |
316 | + color_key.enable = 1; | 317 | + color_key.enable = 1; |
317 | + if ( ioctl(fd_fb, MXCFB_SET_CLR_KEY, &color_key) < 0) { | 318 | + if ( ioctl(fd_fb, MXCFB_SET_CLR_KEY, &color_key) < 0) { |
318 | + printf("Error in applying Color Key\n"); | 319 | + |
319 | + return -1; | 320 | + printf("Error in applying Color Key\n"); |
321 | + return -1; | ||
320 | + } | 322 | + } |
323 | + | ||
321 | + close (fd_fb); | 324 | + close (fd_fb); |
325 | + | ||
322 | + return 0; | 326 | + return 0; |
323 | } | 327 | } |
324 | 328 | ||
@@ -333,7 +337,7 @@ index 423af9d..de524ec 100644 | |||
333 | + Q_UNUSED(event); | 337 | + Q_UNUSED(event); |
334 | + | 338 | + |
335 | + if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0))) | 339 | + if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0))) |
336 | + setVideoSize(); | 340 | + setVideoSize(); |
337 | } | 341 | } |
338 | 342 | ||
339 | bool WidgetRenderer::eventFilter(QEvent * event) | 343 | bool WidgetRenderer::eventFilter(QEvent * event) |
@@ -342,39 +346,42 @@ index 423af9d..de524ec 100644 | |||
342 | - NewFrameEvent *frameEvent= static_cast <NewFrameEvent *>(event); | 346 | - NewFrameEvent *frameEvent= static_cast <NewFrameEvent *>(event); |
343 | - setNextFrame(frameEvent->frame, frameEvent->width, frameEvent->height); | 347 | - setNextFrame(frameEvent->frame, frameEvent->width, frameEvent->height); |
344 | - return true; | 348 | - return true; |
345 | - } | 349 | + if (event->type() == QEvent::Show) { |
346 | - return false; | 350 | + |
347 | + if (event->type() == QEvent::Show) { | ||
348 | + setOverlay(); | 351 | + setOverlay(); |
349 | + return true; | 352 | + return true; |
350 | + } else if (event->type() == QEvent::Resize) { | 353 | + |
354 | + } else if (event->type() == QEvent::Resize) { | ||
355 | + | ||
351 | + setVideoSize(); | 356 | + setVideoSize(); |
352 | + return true; | 357 | + return true; |
353 | + } | 358 | } |
354 | + if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0))) | 359 | + if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0))) |
355 | + setVideoSize(); | 360 | + setVideoSize(); |
356 | + return false; | 361 | return false; |
357 | +} | 362 | } |
358 | + | 363 | |
359 | +void WidgetRenderer::aspectRatioChanged(Phonon::VideoWidget::AspectRatio) | 364 | +void WidgetRenderer::aspectRatioChanged(Phonon::VideoWidget::AspectRatio) |
360 | +{ | 365 | +{ |
361 | + setVideoSize(); | 366 | + setVideoSize(); |
362 | +} | 367 | +} |
363 | + | 368 | + |
364 | +void WidgetRenderer::scaleModeChanged(Phonon::VideoWidget::ScaleMode) | 369 | +void WidgetRenderer::scaleModeChanged(Phonon::VideoWidget::ScaleMode) |
365 | +{ | 370 | +{ |
366 | + setVideoSize(); | 371 | + setVideoSize(); |
367 | +} | 372 | +} |
368 | + | 373 | + |
369 | +void WidgetRenderer::movieSizeChanged(const QSize &movieSize) | 374 | +void WidgetRenderer::movieSizeChanged(const QSize &movieSize) |
370 | +{ | 375 | +{ |
371 | + Q_UNUSED(movieSize); | 376 | + Q_UNUSED(movieSize); |
372 | + setVideoSize(); | 377 | + setVideoSize(); |
378 | +} | ||
379 | + | ||
373 | } | 380 | } |
381 | } //namespace Phonon::Gstreamer | ||
374 | 382 | ||
375 | } | ||
376 | diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.h b/src/3rdparty/phonon/gstreamer/widgetrenderer.h | 383 | diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.h b/src/3rdparty/phonon/gstreamer/widgetrenderer.h |
377 | index 03ee9c0..886975a 100644 | 384 | index 03ee9c0..6de1a03 100644 |
378 | --- a/src/3rdparty/phonon/gstreamer/widgetrenderer.h | 385 | --- a/src/3rdparty/phonon/gstreamer/widgetrenderer.h |
379 | +++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.h | 386 | +++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.h |
380 | @@ -40,20 +40,21 @@ class WidgetRenderer : public AbstractRenderer | 387 | @@ -40,20 +40,21 @@ class WidgetRenderer : public AbstractRenderer |
@@ -394,7 +401,7 @@ index 03ee9c0..886975a 100644 | |||
394 | + void scaleModeChanged(Phonon::VideoWidget::ScaleMode scaleMode); | 401 | + void scaleModeChanged(Phonon::VideoWidget::ScaleMode scaleMode); |
395 | + void movieSizeChanged(const QSize &movieSize); | 402 | + void movieSizeChanged(const QSize &movieSize); |
396 | + void setVideoSize(void); | 403 | + void setVideoSize(void); |
397 | + int setOverlay(void); | 404 | + int setOverlay(void); |
398 | + void handleMove(QMoveEvent* event); | 405 | + void handleMove(QMoveEvent* event); |
399 | private: | 406 | private: |
400 | - mutable QImage m_frame; | 407 | - mutable QImage m_frame; |
@@ -408,7 +415,7 @@ index 03ee9c0..886975a 100644 | |||
408 | 415 | ||
409 | } | 416 | } |
410 | diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.cpp b/src/3rdparty/phonon/gstreamer/x11renderer.cpp | 417 | diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.cpp b/src/3rdparty/phonon/gstreamer/x11renderer.cpp |
411 | index 968f3a8..2119840 100644 | 418 | index 968f3a8..c4662e7 100644 |
412 | --- a/src/3rdparty/phonon/gstreamer/x11renderer.cpp | 419 | --- a/src/3rdparty/phonon/gstreamer/x11renderer.cpp |
413 | +++ b/src/3rdparty/phonon/gstreamer/x11renderer.cpp | 420 | +++ b/src/3rdparty/phonon/gstreamer/x11renderer.cpp |
414 | @@ -31,6 +31,8 @@ | 421 | @@ -31,6 +31,8 @@ |
@@ -420,7 +427,7 @@ index 968f3a8..2119840 100644 | |||
420 | QT_BEGIN_NAMESPACE | 427 | QT_BEGIN_NAMESPACE |
421 | 428 | ||
422 | namespace Phonon | 429 | namespace Phonon |
423 | @@ -83,26 +85,7 @@ X11Renderer::~X11Renderer() | 430 | @@ -83,26 +85,8 @@ X11Renderer::~X11Renderer() |
424 | 431 | ||
425 | GstElement* X11Renderer::createVideoSink() | 432 | GstElement* X11Renderer::createVideoSink() |
426 | { | 433 | { |
@@ -443,7 +450,7 @@ index 968f3a8..2119840 100644 | |||
443 | - | 450 | - |
444 | - if (!videoSink) | 451 | - if (!videoSink) |
445 | - videoSink = gst_element_factory_make ("ximagesink", NULL); | 452 | - videoSink = gst_element_factory_make ("ximagesink", NULL); |
446 | - | 453 | |
447 | + GstElement *videoSink = gst_element_factory_make ("mfw_v4lsink", NULL); | 454 | + GstElement *videoSink = gst_element_factory_make ("mfw_v4lsink", NULL); |
448 | gst_object_ref (GST_OBJECT (videoSink)); //Take ownership | 455 | gst_object_ref (GST_OBJECT (videoSink)); //Take ownership |
449 | gst_object_sink (GST_OBJECT (videoSink)); | 456 | gst_object_sink (GST_OBJECT (videoSink)); |