summaryrefslogtreecommitdiffstats
path: root/src/multimedia/video
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/video')
-rw-r--r--src/multimedia/video/qabstractvideobuffer.cpp14
-rw-r--r--src/multimedia/video/qabstractvideobuffer_p.h5
-rw-r--r--src/multimedia/video/qvideoframe.cpp16
-rw-r--r--src/multimedia/video/qvideoframe.h2
-rw-r--r--src/multimedia/video/qvideosink.cpp3
5 files changed, 15 insertions, 25 deletions
diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp
index bfb97a8fd..db43beb81 100644
--- a/src/multimedia/video/qabstractvideobuffer.cpp
+++ b/src/multimedia/video/qabstractvideobuffer.cpp
@@ -104,8 +104,9 @@ QT_BEGIN_NAMESPACE
/*!
Constructs an abstract video buffer of the given \a type.
*/
-QAbstractVideoBuffer::QAbstractVideoBuffer(QVideoFrame::HandleType type)
- : m_type(type)
+QAbstractVideoBuffer::QAbstractVideoBuffer(QVideoFrame::HandleType type, QRhi *rhi)
+ : m_type(type),
+ rhi(rhi)
{
}
@@ -173,17 +174,12 @@ QVideoFrame::HandleType QAbstractVideoBuffer::handleType() const
\sa map()
*/
-/*!
- Returns a type specific handle to the data buffer.
+/*! \fn quint64 QAbstractVideoBuffer::textureHandle(QRhi *rhi, int plane) const
- The type of the handle is given by handleType() function.
+ Returns a texture handle to the data buffer.
\sa handleType()
*/
-QVariant QAbstractVideoBuffer::handle() const
-{
- return QVariant();
-}
/*!
\fn int QAbstractPlanarVideoBuffer::map(MapMode mode, int *numBytes, int bytesPerLine[4], uchar *data[4])
diff --git a/src/multimedia/video/qabstractvideobuffer_p.h b/src/multimedia/video/qabstractvideobuffer_p.h
index e3a0fb86c..a82f13723 100644
--- a/src/multimedia/video/qabstractvideobuffer_p.h
+++ b/src/multimedia/video/qabstractvideobuffer_p.h
@@ -60,11 +60,12 @@ QT_BEGIN_NAMESPACE
class QVariant;
+class QRhi;
class Q_MULTIMEDIA_EXPORT QAbstractVideoBuffer
{
public:
- QAbstractVideoBuffer(QVideoFrame::HandleType type);
+ QAbstractVideoBuffer(QVideoFrame::HandleType type, QRhi *rhi = nullptr);
virtual ~QAbstractVideoBuffer();
QVideoFrame::HandleType handleType() const;
@@ -81,11 +82,11 @@ public:
virtual MapData map(QVideoFrame::MapMode mode) = 0;
virtual void unmap() = 0;
- virtual QVariant handle() const;
virtual quint64 textureHandle(int /*plane*/) const { return 0; }
protected:
QVideoFrame::HandleType m_type;
+ QRhi *rhi = nullptr;
private:
Q_DISABLE_COPY(QAbstractVideoBuffer)
diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp
index 375f19930..2fa5f9f88 100644
--- a/src/multimedia/video/qvideoframe.cpp
+++ b/src/multimedia/video/qvideoframe.cpp
@@ -808,21 +808,13 @@ int QVideoFrame::planeCount() const
return d->format.nPlanes();
}
-quint64 QVideoFrame::textureHandle(int plane)
-{
- return d->buffer->textureHandle(plane);
-}
-
/*!
- Returns a type specific handle to a video frame's buffer.
-
- For an OpenGL texture this would be the texture ID.
-
- \sa QAbstractVideoBuffer::handle()
+ \internal
+ Returns a texture id to the video frame's buffers.
*/
-QVariant QVideoFrame::handle() const
+quint64 QVideoFrame::textureHandle(int plane)
{
- return d->buffer != nullptr ? d->buffer->handle() : QVariant();
+ return d->buffer->textureHandle(plane);
}
/*!
diff --git a/src/multimedia/video/qvideoframe.h b/src/multimedia/video/qvideoframe.h
index 5e90b6ca1..ea01ccb92 100644
--- a/src/multimedia/video/qvideoframe.h
+++ b/src/multimedia/video/qvideoframe.h
@@ -115,8 +115,6 @@ public:
quint64 textureHandle(int plane);
- QVariant handle() const;
-
qint64 startTime() const;
void setStartTime(qint64 time);
diff --git a/src/multimedia/video/qvideosink.cpp b/src/multimedia/video/qvideosink.cpp
index f5112b173..b996392b4 100644
--- a/src/multimedia/video/qvideosink.cpp
+++ b/src/multimedia/video/qvideosink.cpp
@@ -126,7 +126,10 @@ QRhi *QVideoSink::rhi() const
void QVideoSink::setRhi(QRhi *rhi)
{
+ if (d->rhi == rhi)
+ return;
d->rhi = rhi;
+ d->videoSink->setRhi(rhi);
}
void QVideoSink::setFullScreen(bool fullscreen)