++meego {
++    DEFINES += QT_OPENGL_ES_2
++}

It should be defined when you build against Qt/GL ES.
You shouldn't have to do it in your patch.

________________________________
From: [email protected] [[email protected]] on 
behalf of ext Carsten Munk [[email protected]]
Sent: Monday, December 20, 2010 11:33 AM
To: [email protected]
Subject: Re: [meego-packaging] [meego-commits] 11056: Changes to 
devel:qt-mtf/qt-mobility

We don't have libva on ARM, some kind of ifdef needed..

BR
Carsten Munk

2010/12/20 halley <[email protected]<mailto:[email protected]>>
Hi,
I have made the following changes to qt-mobility in project devel:qt-mtf. 
Please review and accept ASAP.

Thank You,
halley

[This message was auto-generated]

---

Request #11056:

 submit:   home:halley/qt-mobility-new(r4) -> devel:qt-mtf/qt-mobility


Message:
   feature #10972, hw codec support in qt-mobility

State:   new          2010-12-20T01:26:06 halley
Comment: None



changes files:
--------------
--- qt-mobility.changes
+++ qt-mobility.changes
@@ -0,0 +1,6 @@
+* Mon. Dec 20 2010 Halley Zhao 
<[email protected]<mailto:[email protected]>> - 1.1.0
+  use OpenGL-ES v2 shader following Qt change
+
+* Tues Dec 15 2010 Halley Zhao 
<[email protected]<mailto:[email protected]>> - 1.1.0
+  add libva based codec support
+

new:
----
 libva-codec-enable.patch
 opengl-es2-shader-enable.patch

spec files:
-----------
--- qt-mobility.spec
+++ qt-mobility.spec
@@ -25,6 +25,8 @@
 Patch8:     use_isabspath.patch
 Patch9:     fix_bmc_8705.patch
 Patch10:     enable_camerabin_with_meego_target.patch
+Patch11:    libva-codec-enable.patch
+Patch12:    opengl-es2-shader-enable.patch
 Requires:   libqtcontacts1 = %{version}
 Requires:   libqtfeedback1 = %{version}
 Requires:   libqtgallery1 = %{version}
@@ -60,6 +62,8 @@
 BuildRequires:  pkgconfig(xv)
 BuildRequires:  qt-devel-tools
 BuildRequires:  fdupes
+BuildRequires:  pkgconfig(libva-x11)
+BuildRequires:  pkgconfig(gst-vabuffer)


 %description
@@ -449,6 +453,10 @@
 %patch9 -p1
 # enable_camerabin_with_meego_target.patch
 %patch10 -p1
+# libva-codec-enable.patch
+%patch11 -p1
+# opengl-es2-shader-enable.patch
+%patch12 -p1
 # >> setup
 # << setup


other changes:
--------------

++++++ libva-codec-enable.patch (new)
--- libva-codec-enable.patch
+++ libva-codec-enable.patch
+diff --git a/plugins/multimedia/gstreamer/gstreamer.pro<http://gstreamer.pro> 
b/plugins/multimedia/gstreamer/gstreamer.pro<http://gstreamer.pro>
+index 67f8671..39f2066 100644
+--- a/plugins/multimedia/gstreamer/gstreamer.pro<http://gstreamer.pro>
++++ b/plugins/multimedia/gstreamer/gstreamer.pro<http://gstreamer.pro>
+@@ -39,7 +39,10 @@ maemo* {
+ }
+
+ meego {
+-  PKGCONFIG +=gstreamer-plugins-bad-free-0.10
++  PKGCONFIG +=gstreamer-plugins-bad-free-0.10 \
++              libva-x11 \
++              gst-vabuffer
++  DEFINES += QMEDIA_GSTREAMER_VABUFFER
+ }
+
+ # Input
+diff --git 
a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp 
b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp
+index 6efe788..02c3bfa 100644
+--- a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp
++++ b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.cpp
+@@ -54,12 +54,37 @@
+ #if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6) || (GST_VERSION_MICRO > 20)
+ #define USE_PLAYBIN2
+ #endif
++#define USE_PLAYBIN2
++void element_added(GstBin *bin, GstElement *element, gpointer user_data);
++#define DEFAULT_RAW_CAPS \
++    "video/x-raw-yuv; " \
++    "video/x-raw-rgb; " \
++    "video/x-raw-gray; " \
++    "video/x-va; " \
++    "audio/x-raw-int; " \
++    "audio/x-raw-float; " \
++    "text/plain; " \
++    "text/x-pango-markup; " \
++    "video/x-dvd-subpicture; " \
++    "subpicture/x-pgs"
++static GstStaticCaps default_raw_caps = GST_STATIC_CAPS (DEFAULT_RAW_CAPS);
+
+ //#define DEBUG_PLAYBIN
+ //#define DEBUG_VO_BIN_DUMP
+
+-static gboolean new_segment_probe(GstObject *pad, GstEvent *event, guint * 
session)
++void element_added(GstBin *bin, GstElement *element, gpointer user_data)
+ {
++    const char *element_name = NULL;
++    element_name = gst_element_get_name(element);
++    qDebug() << " element name: " << element_name;
++    if(!strncmp(element_name, "uridecodebin", 12)) {
++        qDebug() << "uridecodebin added";
++        g_object_set(G_OBJECT(element), "caps", 
gst_static_caps_get(&default_raw_caps), NULL);
++    }
++}
++
++static gboolean new_segment_probe(GstObject *pad, GstEvent *event, guint * 
session)
++{
+     Q_UNUSED(pad);
+     if (GST_EVENT_TYPE(event) == GST_EVENT_NEWSEGMENT)
+         
reinterpret_cast<QGstreamerPlayerSession*>(session)->processNewSegment(event);
+@@ -129,13 +154,16 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject 
*parent)
+     m_videoOutputBin = gst_bin_new("video-output-bin");
+     gst_object_ref(GST_OBJECT(m_videoOutputBin));
+
++    qDebug() << "remove ffcsp and video scale";
+     m_videoIdentity = gst_element_factory_make("identity", "identity-vo");
+-    m_colorSpace = gst_element_factory_make("ffmpegcolorspace", 
"ffmpegcolorspace-vo");
+-    m_videoScale = gst_element_factory_make("videoscale","videoscale-vo");
++    // m_colorSpace = gst_element_factory_make("ffmpegcolorspace", 
"ffmpegcolorspace-vo");
++    // m_videoScale = gst_element_factory_make("videoscale","videoscale-vo");
+     m_nullVideoSink = gst_element_factory_make("fakesink", NULL);
+     gst_object_ref(GST_OBJECT(m_nullVideoSink));
+-    gst_bin_add_many(GST_BIN(m_videoOutputBin), m_videoIdentity, 
m_colorSpace, m_videoScale, m_nullVideoSink, NULL);
+-    gst_element_link_many(m_videoIdentity, m_colorSpace, m_videoScale, 
m_nullVideoSink, NULL);
++    // gst_bin_add_many(GST_BIN(m_videoOutputBin), m_videoIdentity, 
m_colorSpace, m_videoScale, m_nullVideoSink, NULL);
++    // gst_element_link_many(m_videoIdentity, m_colorSpace, m_videoScale, 
m_nullVideoSink, NULL);
++    gst_bin_add_many(GST_BIN(m_videoOutputBin), m_videoIdentity, 
m_nullVideoSink, NULL);
++    gst_element_link_many(m_videoIdentity, m_nullVideoSink, NULL);
+
+     //add an event probe before video output to save and repost segment events
+     {
+@@ -162,6 +190,8 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject 
*parent)
+         connect(m_busHelper, SIGNAL(message(QGstreamerMessage)), 
SLOT(busMessage(QGstreamerMessage)));
+         m_busHelper->installSyncEventFilter(this);
+
++        // g_object_set(G_OBJECT(m_playbin), "caps", 
gst_static_caps_get(&default_raw_caps), NULL);
++        g_signal_connect(m_playbin, "element-added", 
G_CALLBACK(element_added), m_playbin);
+         g_object_set(G_OBJECT(m_playbin), "video-sink", m_videoOutputBin, 
NULL);
+
+         g_signal_connect(G_OBJECT(m_playbin), "notify::source", 
G_CALLBACK(playbinNotifySource), this);
+@@ -403,14 +433,16 @@ void QGstreamerPlayerSession::setVideoRenderer(QObject 
*videoOutput)
+         m_pendingVideoSink = 0;
+         gst_element_set_state(m_videoSink, GST_STATE_NULL);
+         gst_element_set_state(m_playbin, GST_STATE_NULL);
+-        gst_element_unlink(m_videoScale, m_videoSink);
++        // gst_element_unlink(m_videoScale, m_videoSink);
++        gst_element_unlink(m_videoIdentity, m_videoSink);
+
+         gst_bin_remove(GST_BIN(m_videoOutputBin), m_videoSink);
+
+         m_videoSink = videoSink;
+
+         gst_bin_add(GST_BIN(m_videoOutputBin), m_videoSink);
+-        gst_element_link(m_videoScale, m_videoSink);
++        // gst_element_link(m_videoScale, m_videoSink);
++        gst_element_link(m_videoIdentity, m_videoSink);
+
+         switch (m_pendingState) {
+         case QMediaPlayer::PausedState:
+@@ -495,11 +527,12 @@ void QGstreamerPlayerSession::finishVideoOutputChange()
+         return;
+     }
+
+-    gst_element_set_state(m_colorSpace, GST_STATE_NULL);
+-    gst_element_set_state(m_videoScale, GST_STATE_NULL);
++    // gst_element_set_state(m_colorSpace, GST_STATE_NULL);
++    // gst_element_set_state(m_videoScale, GST_STATE_NULL);
+     gst_element_set_state(m_videoSink, GST_STATE_NULL);
+
+-    gst_element_unlink(m_videoScale, m_videoSink);
++    // gst_element_unlink(m_videoScale, m_videoSink);
++    gst_element_unlink(m_videoIdentity, m_videoSink);
+
+     gst_bin_remove(GST_BIN(m_videoOutputBin), m_videoSink);
+
+@@ -507,7 +540,8 @@ void QGstreamerPlayerSession::finishVideoOutputChange()
+     m_pendingVideoSink = 0;
+
+     gst_bin_add(GST_BIN(m_videoOutputBin), m_videoSink);
+-    if (!gst_element_link(m_videoScale, m_videoSink))
++    // if (!gst_element_link(m_videoScale, m_videoSink))
++    if (!gst_element_link(m_videoIdentity, m_videoSink))
+         qWarning() << "Linking video output element failed";
+
+     GstState state;
+@@ -524,8 +558,8 @@ void QGstreamerPlayerSession::finishVideoOutputChange()
+         break;
+     }
+
+-    gst_element_set_state(m_colorSpace, state);
+-    gst_element_set_state(m_videoScale, state);
++    // gst_element_set_state(m_colorSpace, state);
++    // gst_element_set_state(m_videoScale, state);
+     gst_element_set_state(m_videoSink, state);
+
+     //don't have to wait here, it will unblock eventually
+diff --git 
a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.h 
b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.h
+index ce16cf7..dd72204 100644
+--- a/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.h
++++ b/plugins/multimedia/gstreamer/mediaplayer/qgstreamerplayersession.h
+@@ -150,8 +150,8 @@ private:
+
+     GstElement* m_videoOutputBin;
+     GstElement* m_videoIdentity;
+-    GstElement* m_colorSpace;
+-    GstElement* m_videoScale;
++    // GstElement* m_colorSpace;
++    // GstElement* m_videoScale;
+     GstElement* m_videoSink;
+     GstElement* m_pendingVideoSink;
+     GstElement* m_nullVideoSink;
+diff --git a/plugins/multimedia/gstreamer/qgstreamervideooverlay.h 
b/plugins/multimedia/gstreamer/qgstreamervideooverlay.h
+index 3bea533..9420413 100644
+--- a/plugins/multimedia/gstreamer/qgstreamervideooverlay.h
++++ b/plugins/multimedia/gstreamer/qgstreamervideooverlay.h
+@@ -45,6 +45,7 @@
+ #include <qvideowindowcontrol.h>
+
+ #include "qgstreamervideorendererinterface.h"
++#include <QDebug>
+
+ QT_BEGIN_NAMESPACE
+ class QAbstractVideoSurface;
+diff --git a/plugins/multimedia/gstreamer/qvideosurfacegstsink.cpp 
b/plugins/multimedia/gstreamer/qvideosurfacegstsink.cpp
+index 784e914..8feccbc 100644
+--- a/plugins/multimedia/gstreamer/qvideosurfacegstsink.cpp
++++ b/plugins/multimedia/gstreamer/qvideosurfacegstsink.cpp
+@@ -55,6 +55,10 @@
+
+ #include "qvideosurfacegstsink.h"
+
++#ifdef QMEDIA_GSTREAMER_VABUFFER
++#include <va/va_x11.h>
++#include <gstvabuffer.h>
++#endif
+ //#define DEBUG_VIDEO_SURFACE_SINK
+
+
+@@ -70,6 +74,10 @@ 
QVideoSurfaceGstDelegate::QVideoSurfaceGstDelegate(QAbstractVideoSurface *surfac
+         m_supportedXVideoPixelFormats = 
m_surface->supportedPixelFormats(QAbstractVideoBuffer::XvShmImageHandle);
+         connect(m_surface, SIGNAL(supportedFormatsChanged()), this, 
SLOT(supportedFormatsChanged()));
+     }
++
++#ifdef QMEDIA_GSTREAMER_VABUFFER
++    m_pQPixmap = NULL;
++#endif
+ }
+
+ QList<QVideoFrame::PixelFormat> 
QVideoSurfaceGstDelegate::supportedPixelFormats(QAbstractVideoBuffer::HandleType
 handleType) const
(231 more lines skipped)

++++++ opengl-es2-shader-enable.patch (new)
--- opengl-es2-shader-enable.patch
+++ opengl-es2-shader-enable.patch
+diff --git a/src/multimedia/multimedia.pro<http://multimedia.pro> 
b/src/multimedia/multimedia.pro<http://multimedia.pro>
+index bd37db3..ce78604 100644
+--- a/src/multimedia/multimedia.pro<http://multimedia.pro>
++++ b/src/multimedia/multimedia.pro<http://multimedia.pro>
+@@ -177,6 +177,9 @@ symbian {
+     TARGET.CAPABILITY = ALL -TCB
+     LIBS += -lefsrv
+ }
++meego {
++    DEFINES += QT_OPENGL_ES_2
++}
+
+ CONFIG += middleware
+ include(../../features/deploy.pri)
+diff --git a/src/multimedia/qpaintervideosurface.cpp 
b/src/multimedia/qpaintervideosurface.cpp
+index 4f76fa7..35bac32 100644
+--- a/src/multimedia/qpaintervideosurface.cpp
++++ b/src/multimedia/qpaintervideosurface.cpp
+@@ -1544,9 +1544,10 @@ void QPainterVideoSurface::setGLContext(QGLContext 
*context)
+         if (extensions.contains("ARB_fragment_program"))
+             m_shaderTypes |= FragmentProgramShader;
+ #endif
+-
++#ifndef QT_OPENGL_ES_2
+         if (QGLShaderProgram::hasOpenGLShaderPrograms(m_glContext)
+                 && extensions.contains("ARB_shader_objects"))
++#endif
+             m_shaderTypes |= GlslShader;
+     }
+

_______________________________________________
MeeGo-commits mailing list
[email protected]<mailto:[email protected]>
http://lists.meego.com/listinfo/meego-commits

_______________________________________________
MeeGo-packaging mailing list
[email protected]
http://lists.meego.com/listinfo/meego-packaging

Reply via email to