diff options
author | Val Doroshchuk <valentyn.doroshchuk@qt.io> | 2018-10-04 12:10:02 +0200 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2018-10-05 08:34:48 +0000 |
commit | 8b4cfd80e8ca2fb7ef20903284725b50df05c232 (patch) | |
tree | 1cc06c0dc420007ba15706996175bd0e2df39b86 | |
parent | 45a5831126bb4930285c86936b4873dac65988db (diff) | |
download | qtmultimedia-8b4cfd80e8ca2fb7ef20903284725b50df05c232.tar.gz |
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>
-rw-r--r-- | src/multimediawidgets/qpaintervideosurface.cpp | 9 |
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; |