From 668e467beb4b8d7b9fb9a14dfa0dd677d08214f3 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Thu, 12 Jun 2014 11:05:46 -0300 Subject: qtmultimedia: Drop i.MX6 support patch as Qt 5.3.0 is now in use The Qt 5.3.0 includes this patch so we need to drop it from the BSP layer in other to avoid conflicts. Change-Id: I0fe8592daae18a18f4d149321ff4d03e8b6d64a5 Signed-off-by: Otavio Salvador --- .../qt5/qtmultimedia/add-imx6-support.patch | 844 --------------------- qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend | 5 - 2 files changed, 849 deletions(-) delete mode 100644 qt5-layer/recipes-qt/qt5/qtmultimedia/add-imx6-support.patch delete mode 100644 qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend (limited to 'qt5-layer/recipes-qt') diff --git a/qt5-layer/recipes-qt/qt5/qtmultimedia/add-imx6-support.patch b/qt5-layer/recipes-qt/qt5/qtmultimedia/add-imx6-support.patch deleted file mode 100644 index b49b0a9..0000000 --- a/qt5-layer/recipes-qt/qt5/qtmultimedia/add-imx6-support.patch +++ /dev/null @@ -1,844 +0,0 @@ -adding zero-copy-QSGVideoNode for imx6 - -On imx6 there is a platform-specific API to implement -memory-mapping from gstreamer-buffer to opengl-texture. - -This plugin uses this API to avoid CPU-based-memory-copy. - -This allows fluid video-playback up to 1080p with very little CPU load. -Before even 720p used one cpu-core completely and wasn't fluid. - -Change-Id: I0c33eb5d475393a65459291ce9290fa0753de4a5 - -Upstream-Status: Backport [5.3] - -Signed-off-by: Otavio Salvador - -diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro -index d947f3b..c107599 100644 ---- a/src/plugins/plugins.pro -+++ b/src/plugins/plugins.pro -@@ -6,7 +6,7 @@ - - TEMPLATE = subdirs - --SUBDIRS += m3u -+SUBDIRS += m3u videonode - - android { - SUBDIRS += android opensles -diff --git a/src/plugins/videonode/imx6/imx6.json b/src/plugins/videonode/imx6/imx6.json -new file mode 100644 -index 0000000..08bb12c ---- /dev/null -+++ b/src/plugins/videonode/imx6/imx6.json -@@ -0,0 +1,3 @@ -+{ -+ "Keys": ["sgvideonodes"] -+} -diff --git a/src/plugins/videonode/imx6/imx6.pro b/src/plugins/videonode/imx6/imx6.pro -new file mode 100644 -index 0000000..a2e6798 ---- /dev/null -+++ b/src/plugins/videonode/imx6/imx6.pro -@@ -0,0 +1,21 @@ -+TARGET = imx6vivantevideonode -+QT += multimedia-private qtmultimediaquicktools-private -+ -+PLUGIN_TYPE=video/videonode -+PLUGIN_CLASS_NAME = QSGVivanteVideoNodeFactory -+load(qt_plugin) -+ -+HEADERS += \ -+ qsgvivantevideonode.h \ -+ qsgvivantevideomaterialshader.h \ -+ qsgvivantevideomaterial.h \ -+ qsgvivantevideonodefactory.h -+ -+SOURCES += \ -+ qsgvivantevideonode.cpp \ -+ qsgvivantevideomaterialshader.cpp \ -+ qsgvivantevideomaterial.cpp \ -+ qsgvivantevideonodefactory.cpp -+ -+OTHER_FILES += \ -+ imx6.json -diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp -new file mode 100644 -index 0000000..0ed4e1a ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp -@@ -0,0 +1,196 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include -+#include -+ -+#include "qsgvivantevideomaterial.h" -+#include "qsgvivantevideomaterialshader.h" -+#include "qsgvivantevideonode.h" -+ -+#include -+#include -+ -+#include -+ -+ -+//#define QT_VIVANTE_VIDEO_DEBUG -+ -+QSGVivanteVideoMaterial::QSGVivanteVideoMaterial() : -+ mOpacity(1.0), -+ mCurrentTexture(0) -+{ -+#ifdef QT_VIVANTE_VIDEO_DEBUG -+ qDebug() << Q_FUNC_INFO; -+#endif -+ -+ setFlag(Blending, false); -+} -+ -+QSGVivanteVideoMaterial::~QSGVivanteVideoMaterial() -+{ -+ for (GLuint id : mBitsToTextureMap.values()) { -+#ifdef QT_VIVANTE_VIDEO_DEBUG -+ qDebug() << "delete texture: " << id; -+#endif -+ glDeleteTextures(1, &id); -+ } -+} -+ -+QSGMaterialType *QSGVivanteVideoMaterial::type() const { -+ static QSGMaterialType theType; -+ return &theType; -+} -+ -+QSGMaterialShader *QSGVivanteVideoMaterial::createShader() const { -+ return new QSGVivanteVideoMaterialShader; -+} -+ -+int QSGVivanteVideoMaterial::compare(const QSGMaterial *other) const { -+ if (this->type() == other->type()) { -+ const QSGVivanteVideoMaterial *m = static_cast(other); -+ if (this->mBitsToTextureMap == m->mBitsToTextureMap) -+ return 0; -+ else -+ return 1; -+ } -+ return 1; -+} -+ -+void QSGVivanteVideoMaterial::updateBlending() { -+ setFlag(Blending, qFuzzyCompare(mOpacity, qreal(1.0)) ? false : true); -+} -+ -+void QSGVivanteVideoMaterial::setCurrentFrame(const QVideoFrame &frame) { -+ QMutexLocker lock(&mFrameMutex); -+ mNextFrame = frame; -+ -+#ifdef QT_VIVANTE_VIDEO_DEBUG -+ qDebug() << Q_FUNC_INFO << " new frame: " << frame; -+#endif -+} -+ -+void QSGVivanteVideoMaterial::bind() -+{ -+ QOpenGLContext *glcontext = QOpenGLContext::currentContext(); -+ if (glcontext == 0) { -+ qWarning() << Q_FUNC_INFO << "no QOpenGLContext::currentContext() => return"; -+ return; -+ } -+ -+ QMutexLocker lock(&mFrameMutex); -+ if (mNextFrame.isValid()) { -+ mCurrentFrame.unmap(); -+ -+ mCurrentFrame = mNextFrame; -+ mCurrentTexture = vivanteMapping(mNextFrame); -+ } -+ else -+ glBindTexture(GL_TEXTURE_2D, mCurrentTexture); -+} -+ -+GLuint QSGVivanteVideoMaterial::vivanteMapping(QVideoFrame vF) -+{ -+ QOpenGLContext *glcontext = QOpenGLContext::currentContext(); -+ if (glcontext == 0) { -+ qWarning() << Q_FUNC_INFO << "no QOpenGLContext::currentContext() => return 0"; -+ return 0; -+ } -+ -+ static PFNGLTEXDIRECTVIVMAPPROC glTexDirectVIVMap_LOCAL = 0; -+ static PFNGLTEXDIRECTINVALIDATEVIVPROC glTexDirectInvalidateVIV_LOCAL = 0; -+ -+ if (glTexDirectVIVMap_LOCAL == 0 || glTexDirectInvalidateVIV_LOCAL == 0) { -+ glTexDirectVIVMap_LOCAL = reinterpret_cast(glcontext->getProcAddress("glTexDirectVIVMap")); -+ glTexDirectInvalidateVIV_LOCAL = reinterpret_cast(glcontext->getProcAddress("glTexDirectInvalidateVIV")); -+ } -+ if (glTexDirectVIVMap_LOCAL == 0 || glTexDirectInvalidateVIV_LOCAL == 0) { -+ qWarning() << Q_FUNC_INFO << "couldn't find \"glTexDirectVIVMap\" and/or \"glTexDirectInvalidateVIV\" => do nothing and return"; -+ return 0; -+ } -+ -+ -+ if (vF.map(QAbstractVideoBuffer::ReadOnly)) { -+ -+ if (!mBitsToTextureMap.contains(vF.bits())) { -+ GLuint tmpTexId; -+ glGenTextures(1, &tmpTexId); -+ mBitsToTextureMap.insert(vF.bits(), tmpTexId); -+ -+ const uchar *constBits = vF.bits(); -+ void *bits = (void*)constBits; -+ -+#ifdef QT_VIVANTE_VIDEO_DEBUG -+ qDebug() << Q_FUNC_INFO << "new texture, texId: " << tmpTexId << "; constBits: " << constBits; -+#endif -+ -+ GLuint physical = ~0U; -+ -+ glBindTexture(GL_TEXTURE_2D, tmpTexId); -+ glTexDirectVIVMap_LOCAL(GL_TEXTURE_2D, -+ vF.width(), vF.height(), -+ QSGVivanteVideoNode::getVideoFormat2GLFormatMap().value(vF.pixelFormat()), -+ &bits, &physical); -+ -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ glTexDirectInvalidateVIV_LOCAL(GL_TEXTURE_2D); -+ -+ return tmpTexId; -+ } -+ else { -+ glBindTexture(GL_TEXTURE_2D, mBitsToTextureMap.value(vF.bits())); -+ glTexDirectInvalidateVIV_LOCAL(GL_TEXTURE_2D); -+ return mBitsToTextureMap.value(vF.bits()); -+ } -+ } -+ else { -+#ifdef QT_VIVANTE_VIDEO_DEBUG -+ qWarning() << " couldn't map the QVideoFrame vF: " << vF; -+#endif -+ return 0; -+ } -+ -+ Q_ASSERT(false); // should never reach this line!; -+ return 0; -+} -diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.h b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h -new file mode 100644 -index 0000000..9d792b7 ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h -@@ -0,0 +1,80 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QSGVIDEOMATERIAL_VIVMAP_H -+#define QSGVIDEOMATERIAL_VIVMAP_H -+ -+#include -+#include -+ -+#include -+#include -+#include -+ -+ -+class QSGVivanteVideoMaterial : public QSGMaterial -+{ -+public: -+ QSGVivanteVideoMaterial(); -+ ~QSGVivanteVideoMaterial(); -+ -+ virtual QSGMaterialType *type() const; -+ virtual QSGMaterialShader *createShader() const; -+ virtual int compare(const QSGMaterial *other) const; -+ void updateBlending(); -+ void setCurrentFrame(const QVideoFrame &frame); -+ -+ void bind(); -+ GLuint vivanteMapping(QVideoFrame texIdVideoFramePair); -+ -+ void setOpacity(float o) { mOpacity = o; } -+ -+private: -+ qreal mOpacity; -+ -+ QMap mBitsToTextureMap; -+ QVideoFrame mCurrentFrame, mNextFrame; -+ GLuint mCurrentTexture; -+ -+ QMutex mFrameMutex; -+}; -+ -+#endif // QSGVIDEOMATERIAL_VIVMAP_H -diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp -new file mode 100644 -index 0000000..7b5e5e5 ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.cpp -@@ -0,0 +1,104 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qsgvivantevideomaterialshader.h" -+#include "qsgvivantevideonode.h" -+#include "qsgvivantevideomaterial.h" -+ -+void QSGVivanteVideoMaterialShader::updateState(const RenderState &state, -+ QSGMaterial *newMaterial, -+ QSGMaterial *oldMaterial) -+{ -+ Q_UNUSED(oldMaterial); -+ -+ QSGVivanteVideoMaterial *mat = static_cast(newMaterial); -+ program()->setUniformValue(mIdTexture, 0); -+ mat->bind(); -+ if (state.isOpacityDirty()) { -+ mat->setOpacity(state.opacity()); -+ program()->setUniformValue(mIdOpacity, state.opacity()); -+ } -+ if (state.isMatrixDirty()) -+ program()->setUniformValue(mIdMatrix, state.combinedMatrix()); -+} -+ -+const char * const *QSGVivanteVideoMaterialShader::attributeNames() const { -+ static const char *names[] = { -+ "qt_VertexPosition", -+ "qt_VertexTexCoord", -+ 0 -+ }; -+ return names; -+} -+ -+const char *QSGVivanteVideoMaterialShader::vertexShader() const { -+ static const char *shader = -+ "uniform highp mat4 qt_Matrix; \n" -+ "attribute highp vec4 qt_VertexPosition; \n" -+ "attribute highp vec2 qt_VertexTexCoord; \n" -+ "varying highp vec2 qt_TexCoord; \n" -+ "void main() { \n" -+ " qt_TexCoord = qt_VertexTexCoord; \n" -+ " gl_Position = qt_Matrix * qt_VertexPosition; \n" -+ "}"; -+ return shader; -+} -+ -+const char *QSGVivanteVideoMaterialShader::fragmentShader() const { -+ static const char *shader = -+ "uniform sampler2D texture;" -+ "uniform lowp float opacity;" -+ "" -+ "varying highp vec2 qt_TexCoord;" -+ "" -+ "void main()" -+ "{" -+ " gl_FragColor = texture2D( texture, qt_TexCoord ) * opacity;\n" -+ "}"; -+ return shader; -+} -+ -+ -+void QSGVivanteVideoMaterialShader::initialize() { -+ mIdMatrix = program()->uniformLocation("qt_Matrix"); -+ mIdTexture = program()->uniformLocation("texture"); -+ mIdOpacity = program()->uniformLocation("opacity"); -+} -diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.h b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.h -new file mode 100644 -index 0000000..570be25 ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterialshader.h -@@ -0,0 +1,64 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QSGVIDEOMATERIALSHADER_VIVANTE_H -+#define QSGVIDEOMATERIALSHADER_VIVANTE_H -+ -+#include -+ -+class QSGVivanteVideoMaterialShader : public QSGMaterialShader -+{ -+public: -+ void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); -+ virtual char const *const *attributeNames() const; -+ -+protected: -+ virtual const char *vertexShader() const; -+ virtual const char *fragmentShader() const; -+ virtual void initialize(); -+ -+private: -+ int mIdMatrix; -+ int mIdTexture; -+ int mIdOpacity; -+}; -+ -+#endif // QSGVIDEOMATERIALSHADER_VIVANTE_H -diff --git a/src/plugins/videonode/imx6/qsgvivantevideonode.cpp b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp -new file mode 100644 -index 0000000..d5f1e61 ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp -@@ -0,0 +1,90 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include -+#include -+ -+#include "qsgvivantevideonode.h" -+#include "qsgvivantevideomaterialshader.h" -+#include "qsgvivantevideomaterial.h" -+ -+QMap QSGVivanteVideoNode::static_VideoFormat2GLFormatMap = QMap(); -+ -+QSGVivanteVideoNode::QSGVivanteVideoNode(const QVideoSurfaceFormat &format) : -+ mFormat(format) -+{ -+ setFlag(QSGNode::OwnsMaterial, true); -+ mMaterial = new QSGVivanteVideoMaterial(); -+ setMaterial(mMaterial); -+} -+ -+QSGVivanteVideoNode::~QSGVivanteVideoNode() -+{ -+} -+ -+void QSGVivanteVideoNode::setCurrentFrame(const QVideoFrame &frame) -+{ -+ mMaterial->setCurrentFrame(frame); -+ markDirty(DirtyMaterial); -+} -+ -+const QMap& QSGVivanteVideoNode::getVideoFormat2GLFormatMap() -+{ -+ if (static_VideoFormat2GLFormatMap.isEmpty()) { -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_YV12, GL_VIV_YV12); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_NV12, GL_VIV_NV12); -+ -+ -+ // The following formats should work but are untested! -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_NV21, GL_VIV_NV21); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_UYVY, GL_VIV_UYVY); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_YUYV, GL_VIV_YUY2); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB32, GL_RGBA); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB24, GL_RGB); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_RGB565, GL_RGB565); -+ static_VideoFormat2GLFormatMap.insert(QVideoFrame::Format_BGRA32, GL_BGRA_EXT); -+ } -+ -+ return static_VideoFormat2GLFormatMap; -+} -+ -+ -+ -diff --git a/src/plugins/videonode/imx6/qsgvivantevideonode.h b/src/plugins/videonode/imx6/qsgvivantevideonode.h -new file mode 100644 -index 0000000..ae2120a ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideonode.h -@@ -0,0 +1,67 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QSGVIDEONODE_VIVANTE_H -+#define QSGVIDEONODE_VIVANTE_H -+ -+#include -+#include -+ -+class QSGVivanteVideoMaterial; -+class QSGVivanteVideoNode : public QSGVideoNode -+{ -+public: -+ QSGVivanteVideoNode(const QVideoSurfaceFormat &format); -+ ~QSGVivanteVideoNode(); -+ -+ virtual QVideoFrame::PixelFormat pixelFormat() const { return mFormat.pixelFormat(); } -+ void setCurrentFrame(const QVideoFrame &frame); -+ -+ static const QMap& getVideoFormat2GLFormatMap(); -+ -+private: -+ QVideoSurfaceFormat mFormat; -+ QSGVivanteVideoMaterial *mMaterial; -+ -+ static QMap static_VideoFormat2GLFormatMap; -+}; -+ -+#endif // QSGVIDEONODE_VIVANTE_H -diff --git a/src/plugins/videonode/imx6/qsgvivantevideonodefactory.cpp b/src/plugins/videonode/imx6/qsgvivantevideonodefactory.cpp -new file mode 100644 -index 0000000..e0711e1 ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideonodefactory.cpp -@@ -0,0 +1,60 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qsgvivantevideonodefactory.h" -+#include "qsgvivantevideonode.h" -+ -+QList QSGVivanteVideoNodeFactory::supportedPixelFormats( -+ QAbstractVideoBuffer::HandleType handleType) const -+{ -+ if (handleType == QAbstractVideoBuffer::NoHandle) -+ return QSGVivanteVideoNode::getVideoFormat2GLFormatMap().keys(); -+ else -+ return QList(); -+} -+ -+QSGVideoNode *QSGVivanteVideoNodeFactory::createNode(const QVideoSurfaceFormat &format) -+{ -+ if (supportedPixelFormats(format.handleType()).contains(format.pixelFormat())) { -+ return new QSGVivanteVideoNode(format); -+ } -+ return 0; -+} -diff --git a/src/plugins/videonode/imx6/qsgvivantevideonodefactory.h b/src/plugins/videonode/imx6/qsgvivantevideonodefactory.h -new file mode 100644 -index 0000000..6fda61b ---- /dev/null -+++ b/src/plugins/videonode/imx6/qsgvivantevideonodefactory.h -@@ -0,0 +1,58 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Pelagicore AG -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 as published by the Free Software -+** Foundation and appearing in the file LICENSE.GPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU General Public License version 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QSGVIDEONODEFACTORY_VIVANTE_H -+#define QSGVIDEONODEFACTORY_VIVANTE_H -+ -+#include -+#include -+ -+class QSGVivanteVideoNodeFactory : public QObject, public QSGVideoNodeFactoryInterface -+{ -+public: -+ Q_OBJECT -+ Q_PLUGIN_METADATA(IID QSGVideoNodeFactoryInterface_iid FILE "imx6.json") -+ Q_INTERFACES(QSGVideoNodeFactoryInterface) -+ -+ QList supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const; -+ QSGVideoNode *createNode(const QVideoSurfaceFormat &format); -+}; -+#endif // QSGVIDEONODEFACTORY_VIVANTE_H -diff --git a/src/plugins/videonode/videonode.pro b/src/plugins/videonode/videonode.pro -new file mode 100644 -index 0000000..ecc1c0c ---- /dev/null -+++ b/src/plugins/videonode/videonode.pro -@@ -0,0 +1,3 @@ -+TEMPLATE = subdirs -+ -+SUBDIRS += imx6 --- -2.0.0.rc2 - diff --git a/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend b/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend deleted file mode 100644 index 873862b..0000000 --- a/qt5-layer/recipes-qt/qt5/qtmultimedia_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI_append_mx6 += " file://add-imx6-support.patch" - -PACKAGE_ARCH_mx6 = "${MACHINE_SOCARCH}" -- cgit v1.2.3-54-g00ecf