diff options
Diffstat (limited to 'src/multimedia/video/qimagevideobuffer.cpp')
-rw-r--r-- | src/multimedia/video/qimagevideobuffer.cpp | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/src/multimedia/video/qimagevideobuffer.cpp b/src/multimedia/video/qimagevideobuffer.cpp index bc825004e..400b89319 100644 --- a/src/multimedia/video/qimagevideobuffer.cpp +++ b/src/multimedia/video/qimagevideobuffer.cpp @@ -51,37 +51,25 @@ QImage fixImage(QImage image) } // namespace -QImageVideoBuffer::QImageVideoBuffer(QImage image) - : QAbstractVideoBuffer(QVideoFrame::NoHandle), m_image(fixImage(std::move(image))) -{ -} - -QVideoFrame::MapMode QImageVideoBuffer::mapMode() const -{ - return m_mapMode; -} +QImageVideoBuffer::QImageVideoBuffer(QImage image) : m_image(fixImage(std::move(image))) { } -QAbstractVideoBuffer::MapData QImageVideoBuffer::map(QVideoFrame::MapMode mode) +QAbstractVideoBuffer::MapData QImageVideoBuffer::map(QtVideo::MapMode mode) { MapData mapData; - if (m_mapMode == QVideoFrame::NotMapped && !m_image.isNull() - && mode != QVideoFrame::NotMapped) { - m_mapMode = mode; - mapData.nPlanes = 1; + if (!m_image.isNull()) { + mapData.planeCount = 1; mapData.bytesPerLine[0] = m_image.bytesPerLine(); - mapData.data[0] = m_image.bits(); - mapData.size[0] = m_image.sizeInBytes(); + if (mode == QtVideo::MapMode::ReadOnly) + mapData.data[0] = const_cast<uint8_t *>(m_image.constBits()); + else + mapData.data[0] = m_image.bits(); + mapData.dataSize[0] = m_image.sizeInBytes(); } return mapData; } -void QImageVideoBuffer::unmap() -{ - m_mapMode = QVideoFrame::NotMapped; -} - QImage QImageVideoBuffer::underlyingImage() const { return m_image; |