From b307fd4852d9bfd05eba01a62f4a9eae86d2e46b Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Wed, 24 Jun 2020 23:45:31 +0200 Subject: Remove android video node Since it uses gl texture, which can be replaced by default sg video node. Task-number: QTBUG-74423 Change-Id: Id00748ccf18595d8ea782378c512c7fca6fe0229 Reviewed-by: Laszlo Agocs --- src/plugins/android/android.pro | 4 - .../android/videonode/android_videonode.json | 3 - .../android/videonode/qandroidsgvideonode.cpp | 212 --------------------- .../android/videonode/qandroidsgvideonode.h | 71 ------- .../videonode/qandroidsgvideonodeplugin.cpp | 65 ------- .../android/videonode/qandroidsgvideonodeplugin.h | 60 ------ src/plugins/android/videonode/videonode.pro | 18 -- 7 files changed, 433 deletions(-) delete mode 100644 src/plugins/android/videonode/android_videonode.json delete mode 100644 src/plugins/android/videonode/qandroidsgvideonode.cpp delete mode 100644 src/plugins/android/videonode/qandroidsgvideonode.h delete mode 100644 src/plugins/android/videonode/qandroidsgvideonodeplugin.cpp delete mode 100644 src/plugins/android/videonode/qandroidsgvideonodeplugin.h delete mode 100644 src/plugins/android/videonode/videonode.pro diff --git a/src/plugins/android/android.pro b/src/plugins/android/android.pro index e77053b77..37d11c86b 100644 --- a/src/plugins/android/android.pro +++ b/src/plugins/android/android.pro @@ -2,7 +2,3 @@ TEMPLATE = subdirs SUBDIRS += src android: SUBDIRS += jar - -qtHaveModule(quick) { - SUBDIRS += videonode -} diff --git a/src/plugins/android/videonode/android_videonode.json b/src/plugins/android/videonode/android_videonode.json deleted file mode 100644 index 9b359ebac..000000000 --- a/src/plugins/android/videonode/android_videonode.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": ["android"] -} diff --git a/src/plugins/android/videonode/qandroidsgvideonode.cpp b/src/plugins/android/videonode/qandroidsgvideonode.cpp deleted file mode 100644 index 97b3a41f7..000000000 --- a/src/plugins/android/videonode/qandroidsgvideonode.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qandroidsgvideonode.h" - -#include -#include - -QT_BEGIN_NAMESPACE - -class QAndroidSGVideoNodeMaterialShader : public QSGMaterialShader -{ -public: - void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); - - char const *const *attributeNames() const { - static const char *names[] = { - "qt_VertexPosition", - "qt_VertexTexCoord", - 0 - }; - return names; - } - -protected: - - const char *vertexShader() const { - 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 *fragmentShader() const { - static const char *shader = - "uniform sampler2D rgbTexture;" - "uniform lowp float opacity;" - "" - "varying highp vec2 qt_TexCoord;" - "" - "void main()" - "{" - " gl_FragColor = texture2D(rgbTexture, qt_TexCoord) * opacity;" - "}"; - return shader; - } - - void initialize() { - m_id_matrix = program()->uniformLocation("qt_Matrix"); - m_id_Texture = program()->uniformLocation("rgbTexture"); - m_id_opacity = program()->uniformLocation("opacity"); - } - - int m_id_matrix; - int m_id_Texture; - int m_id_opacity; -}; - -class QAndroidSGVideoNodeMaterial : public QSGMaterial -{ -public: - QAndroidSGVideoNodeMaterial() - : m_textureId(0) - , m_textureUpdated(false) - , m_opacity(1.0) - { - setFlag(Blending, false); - } - - QSGMaterialType *type() const { - static QSGMaterialType theType; - return &theType; - } - - QSGMaterialShader *createShader() const { - return new QAndroidSGVideoNodeMaterialShader; - } - - int compare(const QSGMaterial *other) const { - const QAndroidSGVideoNodeMaterial *m = static_cast(other); - int diff = m_textureId - m->m_textureId; - if (diff) - return diff; - - return (m_opacity > m->m_opacity) ? 1 : -1; - } - - void updateBlending() { - setFlag(Blending, qFuzzyCompare(m_opacity, qreal(1.0)) ? false : true); - } - - void updateTexture(GLuint id, const QSize &size) { - if (m_textureId != id || m_textureSize != size) { - m_textureId = id; - m_textureSize = size; - m_textureUpdated = true; - } - } - - void bind() - { - glBindTexture(GL_TEXTURE_2D, m_textureId); - if (m_textureUpdated) { - 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); - m_textureUpdated = false; - } - } - - QSize m_textureSize; - GLuint m_textureId; - bool m_textureUpdated; - qreal m_opacity; -}; - - -QAndroidSGVideoNode::QAndroidSGVideoNode(const QVideoSurfaceFormat &format) - : m_format(format) -{ - setFlags(OwnsMaterial | UsePreprocess); - m_material = new QAndroidSGVideoNodeMaterial; - setMaterial(m_material); -} - -QAndroidSGVideoNode::~QAndroidSGVideoNode() -{ - m_frame = QVideoFrame(); -} - -void QAndroidSGVideoNode::setCurrentFrame(const QVideoFrame &frame, FrameFlags) -{ - QMutexLocker lock(&m_frameMutex); - m_frame = frame; - markDirty(DirtyMaterial); -} - -void QAndroidSGVideoNodeMaterialShader::updateState(const RenderState &state, - QSGMaterial *newMaterial, - QSGMaterial *oldMaterial) -{ - Q_UNUSED(oldMaterial); - QAndroidSGVideoNodeMaterial *mat = static_cast(newMaterial); - program()->setUniformValue(m_id_Texture, 0); - - mat->bind(); - - if (state.isOpacityDirty()) { - mat->m_opacity = state.opacity(); - mat->updateBlending(); - program()->setUniformValue(m_id_opacity, GLfloat(mat->m_opacity)); - } - - if (state.isMatrixDirty()) - program()->setUniformValue(m_id_matrix, state.combinedMatrix()); -} - -void QAndroidSGVideoNode::preprocess() -{ - QMutexLocker lock(&m_frameMutex); - - GLuint texId = 0; - if (m_frame.isValid()) - texId = m_frame.handle().toUInt(); - - m_material->updateTexture(texId, m_frame.size()); -} - -QT_END_NAMESPACE diff --git a/src/plugins/android/videonode/qandroidsgvideonode.h b/src/plugins/android/videonode/qandroidsgvideonode.h deleted file mode 100644 index 2019f6aa9..000000000 --- a/src/plugins/android/videonode/qandroidsgvideonode.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QANDROIDSGVIDEONODE_H -#define QANDROIDSGVIDEONODE_H - -#include -#include - -QT_BEGIN_NAMESPACE - -class QAndroidSGVideoNodeMaterial; - -class QAndroidSGVideoNode : public QSGVideoNode -{ -public: - QAndroidSGVideoNode(const QVideoSurfaceFormat &format); - ~QAndroidSGVideoNode(); - - void setCurrentFrame(const QVideoFrame &frame, FrameFlags flags); - QVideoFrame::PixelFormat pixelFormat() const { return m_format.pixelFormat(); } - QAbstractVideoBuffer::HandleType handleType() const { return QAbstractVideoBuffer::GLTextureHandle; } - - void preprocess(); - -private: - QAndroidSGVideoNodeMaterial *m_material; - QMutex m_frameMutex; - QVideoFrame m_frame; - QVideoSurfaceFormat m_format; -}; - -QT_END_NAMESPACE - -#endif // QANDROIDSGVIDEONODE_H diff --git a/src/plugins/android/videonode/qandroidsgvideonodeplugin.cpp b/src/plugins/android/videonode/qandroidsgvideonodeplugin.cpp deleted file mode 100644 index d70c8100b..000000000 --- a/src/plugins/android/videonode/qandroidsgvideonodeplugin.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qandroidsgvideonodeplugin.h" -#include "qandroidsgvideonode.h" - -QT_BEGIN_NAMESPACE - -QList QAndroidSGVideoNodeFactoryPlugin::supportedPixelFormats( - QAbstractVideoBuffer::HandleType handleType) const -{ - QList pixelFormats; - - if (handleType == QAbstractVideoBuffer::GLTextureHandle) - pixelFormats.append(QVideoFrame::Format_ABGR32); - - return pixelFormats; -} - -QSGVideoNode *QAndroidSGVideoNodeFactoryPlugin::createNode(const QVideoSurfaceFormat &format) -{ - if (supportedPixelFormats(format.handleType()).contains(format.pixelFormat())) - return new QAndroidSGVideoNode(format); - - return 0; -} - - -QT_END_NAMESPACE diff --git a/src/plugins/android/videonode/qandroidsgvideonodeplugin.h b/src/plugins/android/videonode/qandroidsgvideonodeplugin.h deleted file mode 100644 index d174db4fa..000000000 --- a/src/plugins/android/videonode/qandroidsgvideonodeplugin.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QANDROIDSGVIDEONODEPLUGIN_H -#define QANDROIDSGVIDEONODEPLUGIN_H - -#include - -QT_BEGIN_NAMESPACE - -class QAndroidSGVideoNodeFactoryPlugin : public QSGVideoNodeFactoryPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QSGVideoNodeFactoryInterface_iid - FILE "android_videonode.json") - -public: - QList supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const; - QSGVideoNode *createNode(const QVideoSurfaceFormat &format); -}; - -QT_END_NAMESPACE - -#endif // QANDROIDSGVIDEONODEPLUGIN_H diff --git a/src/plugins/android/videonode/videonode.pro b/src/plugins/android/videonode/videonode.pro deleted file mode 100644 index daf07c9ec..000000000 --- a/src/plugins/android/videonode/videonode.pro +++ /dev/null @@ -1,18 +0,0 @@ -TARGET = qtsgvideonode_android - -QT += quick multimedia-private qtmultimediaquicktools-private - -HEADERS += \ - qandroidsgvideonodeplugin.h \ - qandroidsgvideonode.h - -SOURCES += \ - qandroidsgvideonodeplugin.cpp \ - qandroidsgvideonode.cpp - -OTHER_FILES += android_videonode.json - -PLUGIN_TYPE = video/videonode -PLUGIN_EXTENDS = quick -PLUGIN_CLASS_NAME = QAndroidSGVideoNodeFactoryPlugin -load(qt_plugin) -- cgit v1.2.3