summaryrefslogtreecommitdiffstats
path: root/src/multimediawidgets
diff options
context:
space:
mode:
authorVal Doroshchuk <valentyn.doroshchuk@qt.io>2018-10-04 12:10:02 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2018-10-05 08:34:48 +0000
commit8b4cfd80e8ca2fb7ef20903284725b50df05c232 (patch)
tree1cc06c0dc420007ba15706996175bd0e2df39b86 /src/multimediawidgets
parent45a5831126bb4930285c86936b4873dac65988db (diff)
GraphicsVideoItem: Interpret ARGB32 as premultiplied
Do not convert ARG32 to premultiplied. Rather interpret it as premultiplied. Should be better even if SSE2 is disabled. Task-number: QTBUG-52114 Change-Id: Ic63f59dc8a940d6d73c618ef3a75b47a0950fff3 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/multimediawidgets')
-rw-r--r--src/multimediawidgets/qpaintervideosurface.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/multimediawidgets/qpaintervideosurface.cpp b/src/multimediawidgets/qpaintervideosurface.cpp
index 0396f9fc0..e4762a7e1 100644
--- a/src/multimediawidgets/qpaintervideosurface.cpp
+++ b/src/multimediawidgets/qpaintervideosurface.cpp
@@ -143,6 +143,11 @@ QAbstractVideoSurface::Error QVideoSurfaceGenericPainter::start(const QVideoSurf
{
m_frame = QVideoFrame();
m_imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ // Do not render into ARGB32 images using QPainter.
+ // Using QImage::Format_ARGB32_Premultiplied is significantly faster.
+ if (m_imageFormat == QImage::Format_ARGB32)
+ m_imageFormat = QImage::Format_ARGB32_Premultiplied;
+
m_imageSize = format.frameSize();
m_scanLineDirection = format.scanLineDirection();
m_mirrored = format.property("mirrored").toBool();
@@ -191,10 +196,6 @@ QAbstractVideoSurface::Error QVideoSurfaceGenericPainter::paint(
m_imageSize.height(),
m_frame.bytesPerLine(),
m_imageFormat);
- // Do not render into ARGB32 images using QPainter.
- // Using QImage::Format_ARGB32_Premultiplied is significantly faster.
- if (m_imageFormat == QImage::Format_ARGB32)
- image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
const QTransform oldTransform = painter->transform();
QTransform transform = oldTransform;