summaryrefslogtreecommitdiffstats
path: root/src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h
diff options
context:
space:
mode:
authorJonas Rabbe <jonas.rabbe@nokia.com>2011-11-08 12:38:02 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-14 07:59:19 +0100
commit956526a9fb769acc66b376be0b051c0108a06f21 (patch)
treeaf4fd6da5f8d54483c1d944fa15c5bb366fbd7a8 /src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h
parent34cdc41a935766a7d773cb7e2bdb7ce27711dd9d (diff)
Changed QVideoSurfaceGstSink to take pools from plugins
Change-Id: Iec743efc52513e2000276b9a18d1d9639c270699 Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h')
-rw-r--r--src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h b/src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h
new file mode 100644
index 000000000..7dbccfdbc
--- /dev/null
+++ b/src/multimedia/gsttools_headers/qgstbufferpoolinterface_p.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia 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.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGSTBUFFERPOOLINTERFACE_P_H
+#define QGSTBUFFERPOOLINTERFACE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <qabstractvideobuffer.h>
+#include <qvideosurfaceformat.h>
+#include <QtCore/qobject.h>
+#include <QtCore/qplugin.h>
+#include <QtCore/qfactoryinterface.h>
+
+#include <gst/gst.h>
+
+const QLatin1String QGstBufferPoolPluginKey("bufferpool");
+
+/*!
+ Abstract interface for video buffers allocation.
+*/
+class QGstBufferPoolInterface : public QFactoryInterface
+{
+public:
+ virtual ~QGstBufferPoolInterface() {}
+
+ virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const = 0;
+
+ virtual GType bufferType() const = 0;
+ virtual GstBuffer *takeBuffer(const QVideoSurfaceFormat &format, GstCaps *caps) = 0;
+ virtual void clear() = 0;
+
+ virtual QAbstractVideoBuffer::HandleType handleType() const = 0;
+
+ /*!
+ Build an QAbstractVideoBuffer instance from compatible (mathcing gst buffer type)
+ GstBuffer.
+
+ This method is called from gstreamer video sink thread.
+ */
+ virtual QAbstractVideoBuffer *prepareVideoBuffer(GstBuffer *buffer, int bytesPerLine) = 0;
+};
+
+#define QGstBufferPoolInterface_iid "com.nokia.Qt.QGstBufferPoolInterface"
+Q_DECLARE_INTERFACE(QGstBufferPoolInterface, QGstBufferPoolInterface_iid)
+
+class QGstBufferPoolPlugin : public QObject, public QGstBufferPoolInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QGstBufferPoolInterface:QFactoryInterface)
+public:
+ explicit QGstBufferPoolPlugin(QObject *parent = 0);
+ virtual ~QGstBufferPoolPlugin() {}
+
+ virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const = 0;
+
+ virtual GType bufferType() const = 0;
+ virtual GstBuffer *takeBuffer(const QVideoSurfaceFormat &format, GstCaps *caps) = 0;
+ virtual void clear() = 0;
+
+ virtual QAbstractVideoBuffer::HandleType handleType() const = 0;
+
+ /*!
+ Build an QAbstractVideoBuffer instance from compatible (mathcing gst buffer type)
+ GstBuffer.
+
+ This method is called from gstreamer video sink thread.
+ */
+ virtual QAbstractVideoBuffer *prepareVideoBuffer(GstBuffer *buffer, int bytesPerLine) = 0;
+
+ virtual QStringList keys() const = 0;
+};
+
+#endif