summaryrefslogtreecommitdiffstats
path: root/src/multimediawidgets/qpaintervideosurface.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Update commercial license headers"v5.15.3-lts-lgplTarja Sundqvist2021-03-251-20/+20
| | | | | | | | | | | This reverts commit 80d46e3a5f64ff2456c40bdba63b6d5c69a32cdd. Revert of commercial license headers is required for Qt 5.15.3 opensource release. Task-number: QTBUG-91108 Change-Id: I5c64ffa120f916711e5cf01c828774f8456dec06 Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
* Update commercial license headersTarja Sundqvist2021-01-271-20/+20
| | | | | | | | | | | | | | | | Updated header.COMM to files in tqtc-qtmultimedia. Examples, tests or documentation files are not updated. The commercial license header may contain some additional lines so that its line count equals with the earlier license header. Reaso for this is that some autotests use hard coded line numbers and a change in the line count causes failures in tests. Task-number: QTQAINFRA-4171 Change-Id: I86ebf7c3653b55983cefff246c0cb019cbcda8c4 Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
* Revert "Map QVideoFrame::Format_Y8=>QImage::Format_Grayscale8 in QVideoFrame"Andy Shaw2020-11-301-2/+1
| | | | | | | | | | | | This reverts commit 2b96c113cf7057b556856149114999b973b3f2c2, due to the fact that it introduces a problem with existing cameras on Windows. So reverting for now until a fix can be found. Change-Id: Ica59c8a68de7aecf6a4ebd1bd044363e9acefd93 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 67d1ff140e60e3372d05fc7af2cf85de891a31f0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Map QVideoFrame::Format_Y8=>QImage::Format_Grayscale8 in QVideoFrameVaL Doroshchuk2020-06-021-1/+2
| | | | | | | | Fixes: QTBUG-52455 Change-Id: I30582582935ae0a2c5094db995cba83b62adc767 Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 2b96c113cf7057b556856149114999b973b3f2c2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove usage of QGL* APIsVaL Doroshchuk2020-02-181-61/+29
| | | | | | | | | QOpenGL API should be used instead. Task-number: QTBUG-74409 Fixes: QTBUG-81902 Change-Id: I80d09cba79248451cf211eabd87651301ae18b63 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Expose video surfaces in rendering componentsVaL Doroshchuk2020-01-051-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Currently QVideoWidget, QGraphicsVideoItem and QML Video Output tightly depend on QMediaPlayer, QMediaService etc. Since QMediaService is deprecated and will be removed from Qt6, its usage must be removed from rendering components. * Also it is a part of a task to make all components independent, e.g. without dependencies to another components, like the media player, or video producer. These video consumer components should be reusable without QMediaPlayer too, which today is not possible, and should have responsibility for a single part of the functionality. * It is a part of a task to allow users to decide how to render video, using either video surface or native windows. Introducing QVideoWidget::videoSurface() QGraphicsVideoItem::videoSurface() QDeclarativeVideoOutput::videoSurface() that create a surface, if necessary, and returns the underlying video surface which provides a possibility to render video frames without knowledge of any services and controls. Can be used like: QMediaPlayer->setVideoOutput(QVideoWidget->videoSurface()); or QMediaPlayer->setVideoOutput(QGraphicsVideoItem->videoSurface()); This allows QMediaPlayer to get video frames from a backend, without using QVideoWidget/QGraphicsVideoItem, and to present these frames to provided surface. Moreover, now it is possible to render video frames without QMediaPlayer: QVideoSurfaceFormat format(img.size(), QVideoFrame::Format_ARGB32); videoWidget->videoSurface()->start(format); videoWidget->videoSurface()->present(img); [ChangeLog] Introduced videoSurface property to QVideoWidget, QGraphicsVideoItem and QDeclarativeVideoOutput. Task-number: QTBUG-80431 Change-Id: I49641750537160832e29c297279e72b8288e974c Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Include moc files after QT_END_NAMESPACEVal Doroshchuk2019-09-091-2/+1
| | | | | | Fixes: QTBUG-76574 Change-Id: I69ef47bbd01967c3d7a0c5d1554fcdd29619ebfa Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Fix compile issue when no opengl in QVideoSurfacePainterVal Doroshchuk2019-06-171-4/+4
| | | | | | | | error: invalid use of incomplete type 'class QGLContext' Change-Id: I4bc9bd4231e663b187d3cef917b7a551ba614ba9 Fixes: QTBUG-76405 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Use QOpenGLContext::makeCurrent if QGLContext::makeCurrent failedVaL Doroshchuk2019-05-141-8/+17
| | | | | | | | | | | | | | | | | | If QPainterVideoSurface::setGLContext(QGLContext::currentContext()) is used and no valid paint device has been provided to QGLContext, it fails to make the context current. Thus there might be no available current context which might also produce crashes. QGLContext::currentContext() creates QGLContext based on current QOpenGLContext instance, and no paint device is available in QGLContext::device() in this case. Currently QVideoWidget and QGraphicsVideoItem are effected. It is relevant when a renderer calls currentContext->doneCurrent() before using the QPainterVideoSurface. After this there is no any current context which could cause a crash, e.g. within compiling the shaders. Task-number: QTBUG-74277 Change-Id: Ia28f4f6843a82a897399fd1ce2463e3b087b6437 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* GraphicsVideoItem: Interpret ARGB32 as premultipliedVal Doroshchuk2018-10-051-4/+5
| | | | | | | | | | 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>
* Fix target rectangle coordinates while painting image with QPainterVal Doroshchuk2018-03-221-2/+3
| | | | | | | | | | | | | QRectF::setX() may change the width. QRectF::setY() may change the height. If either width or height has been adjusted incorrect target rect is applied to draw an image which will cause some artefacts to be shown (like rectangle with a garbage) and incorrect size of actual content. Task-number: QTBUG-53594 Change-Id: Iee92aaf908952d7809e8ad62f8d1126b7ecac642 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Fix rendering issue with QGraphicsView and QOpenGLWidget viewportVaL Doroshchuk2017-12-121-2/+2
| | | | | | | | | Since QOpenGLWidget always renders offscreen (uses QOffscreenSurface) the surface size is always (1, 1). Task-number: QTBUG-53099 Change-Id: I3803efba57e04c676eda85f0e29efa34f8d8d5e5 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Convert ARGB32 to premultipliedVal Doroshchuk2017-11-081-0/+4
| | | | | | | | | | Do not render into ARGB32 images using QPainter. Using premultiplied version is significantly faster. Task-number: QTBUG-52114 Change-Id: Ia057788d5af0fb303a69310a7c7a197ec7f76516 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Add missing override and remove redundant virtualAlexander Volkov2016-12-121-20/+20
| | | | | Change-Id: Ifd439abf21877adff57080489324bea729ee5279 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Remove leftover OpenGl ES 1 related macrosLars Knoll2016-11-161-5/+5
| | | | | | Change-Id: I9b1e31e3d1bcfbffc448551be5654f8818baf91a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-05-101-12/+7
|\ | | | | | | | | | | | | Conflicts: src/plugins/winrt/qwinrtcameracontrol.cpp Change-Id: I45d3042adf19577a72794610fa1c310cb22e26c4
| * Fix macro redefinition warningChristian Stromme2016-04-271-12/+7
| | | | | | | | | | | | | | Don't re-define APIENTRY macros unconditionally on mac. Change-Id: I894f866da0ec0d6da76a62f01c24739be92d851f Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* | Updated license headersAntti Kokko2016-01-191-14/+20
|/ | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I324f65c61171f36641472964d095d72e452afb3a Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Add new property to QVideoSurfaceFormat.Yoann Lopes2015-08-071-13/+29
| | | | | | | | | | | | The 'mirrored' property indicates the QVideoFrames need to be mirrored along their vertical axis. This is typically needed for video frames coming from a front camera on a mobile device. This is implemented as a string-based property. In Qt 5.6, this should be replaced by a new public function. Change-Id: Ideb7de81e83f66826f4efb5f2951c4beec13546b Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* Support BGR format for OpenGL textures in QPainterVideoSurface.Yoann Lopes2015-06-101-4/+25
| | | | | | | | Also, use the correct shader for RGB formats, we should be using the one that does swizzling in that case. Change-Id: I77b6327501f833fb2f7b30411fbe853e975a59c7 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-03-171-10/+12
|\ | | | | | | Change-Id: Id24f14bef17b86e7027e055473f0357854780979
| * QPainterVideoSurface: restore original order for the supported formats.Yoann Lopes2015-03-131-10/+12
| | | | | | | | | | | | | | | | | | The formats returned by supportedPixelFormats() are supposed to be in descending order of preference. Some formats were changed positions in commit 66ba2197. Change-Id: Ib52e93ba3554d80fa388a01f0b47fa049ac046ec Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-131-1/+1
|\| | | | | | | Change-Id: I5575a4ba13212c9bfe73a3de3ef17c6528beafc3
| * Fix no-opengl pixel format check (reenables Format_RGB24)Peter Seiderer2015-02-021-1/+1
| | | | | | | | | | | | | | | | | | Disable Format_RGB24 only in case of QOpenGLContext::LibGLES by moving the no-opengl endif after the check against Format_RGB24. Change-Id: I389ae2bb32dc8b2c55ec801f52d820620630b1c0 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Update copyright headersAntti Kokko2015-02-121-7/+7
|/ | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Make it compile with no-openglLaszlo Agocs2014-12-111-0/+4
| | | | | | Change-Id: I71358bb1268e5b28b66b1817a3ec0cd98459cfd2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* Update license headers and add new license filesAntti Kokko2014-08-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: Ied06887225df341064c12bcc14c259ae74116f2e Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Support dynamic opengl32 - ANGLE switching on WindowsLaszlo Agocs2014-07-291-30/+36
| | | | | | Change-Id: I38532db3ab0ad4fcb8dbabd0cbb528f7d8e4ba06 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Release videoframe on painter stop()Wouter Huysentruit2014-03-061-0/+12
| | | | | | | | | QVideoSurfaceGLPainter/QVideoSurfaceGlslPainter needs to release the video frame on stop (just like QVideoSurfaceGenericPainter already does). Change-Id: Iaf3eb13eaf51fbc22fab6b1f80db8e8978ac328d Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* whitespace fixesOswald Buddenhagen2014-01-301-1/+1
| | | | | | | | remove trailing spaces & expand tabs. Change-Id: I05ef110abed90f13b47752760ffb4567a11a6a5e Reviewed-by: Yoann Lopes <yoann.lopes@digia.com> Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
* Fix "conversion from 'double' to 'float'" warnings on MSVC2010.v5.2.0-alpha1Mitch Curtis2013-09-241-12/+12
| | | | | Change-Id: I209d76fa2d87ad2eb540c750b8c4efb865441aae Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix QVideoSurfaceArbFpPainter mistakenly failing to start in some cases.Yoann Lopes2013-09-171-0/+2
| | | | | | | | | | If an OpenGL error occurred before starting the video painter, it would fail to do so. This patch simply makes sure the OpenGL error flag is cleared before checking for GL errors that would occur in QVideoSurfaceArbFpPainter's code. Change-Id: I2eacf6db03cb290adf00a9faf11145c7a6ade565 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* AVFoundation: Remove QVideoSurfaceCoreGraphicsPainterAndy Nichols2013-08-261-11/+3
| | | | | | | | | This was a leftover from Qt 4, as it is no longer possible to use the CoreGraphics paint engine. Instead we should just use the logic in QPainterVideoSurface render the QVideoFrame. Change-Id: I7e97fe7c30fd478dcd405d300e0c3f70050ca25f Reviewed-by: Christian Stromme <christian.stromme@digia.com>
* Make sure QVideoSurfaceGLPainter always uses a valid texture.Yoann Lopes2013-01-161-0/+5
| | | | | | | | QVideoSurfaceGLPainter should not assume that the GL texture provided by the QVideoFrame is fully initialized for drawing. Change-Id: I752ecf69a3cf1faf0a7cf8f84b372c3b347824be Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix: Only flip video once for BottomToTop scanline directionsWouter Huysentruit2013-01-141-23/+8
| | | | | | | | | Top & bottom of the texture coordinates are already flipped for BottomToTop scanline directions. So there is no need to flip top & bottom of the vertex coordinates too. Change-Id: I221b94afb65c194bdedb787414e6a436b8095fb2 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@gmail.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-101-1/+1
| | | | | | Change-Id: Ia8c1c38aba1544603fada8c414cc856f365fd15b Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* AVFoundation: Enable QImage based frame fallbackAndy Nichols2012-11-211-0/+4
| | | | | | | | | | | QGraphicsVideoItem was not working because the QPainterVideoSurface was unable to paint BGR32 format OpenGL textures. Now if the QGraphicsView window has a QGLWidget viewport, we use the GLTextureHandle to render the video, otherwise we fallback to the software QImage rendered case. Task-number: QTBUG-28017 Change-Id: I9304e0a2536f15075ae34cdd509ef24fbc18604e Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-241-24/+24
| | | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: Id77334cfb15de096941c88e32d04ca07b4eb4709 Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Re-enabled CIImage based gfx video item on MacDmytro Poplavskiy2012-08-271-2/+2
| | | | | | | | | Also prefer CoreImageHandle to GLTextureHandle in QuickTime player backend, to avoid unnecessary copy via FBO. Change-Id: Id5aa039c438378b7bbf816b7845b05574683c471 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Add default initialisation to various multimedia classesMithra Pattison2012-06-251-7/+15
| | | | | Change-Id: I902de05984fdae152e2678e4cf2d401a0b670703 Reviewed-by: Jonas Rabbe <jonas.rabbe@gmail.com>
* Fix some compiler warnings.Michael Goddard2012-02-141-11/+6
| | | | | | | | | As it turns out, we had an overloaded virtual from an earlier era, with the extra parameter never used. So cleaning that up was a bonus to remove the compiler warning. Change-Id: I780287f8a5d2b0a1ec84ec62c88ba50e051f372b Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I20e5215108c6ebd5f8474fed5c3665118e4791e6 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update obsolete contact address.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: Ie8cd560b6d9a2c6e552b6be1ad8bc96c80a6535c Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Remove antiquated \since lines in docs.Michael Goddard2012-01-161-21/+0
| | | | | | | They aren't useful in the case of QtMultimedia{Kit} Change-Id: If1b0b6625763c85907fb05beb9c440046472ddef Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
* Update year in Nokia copyright headers.Jason McDonald2012-01-121-1/+1
| | | | | | | Update headers from before 2011 that were missed in the previous commit. Change-Id: Ib0fd91a39ffc57117fe01280e34519c3f914fac0 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Multimedia: Compile on Windows.Friedemann Kleint2011-10-121-2/+2
| | | | | | | | | | | MSVC is more strict about #include <> and #include "". Reviewed-by: Ling Hu <ling.hu@nokia.com> Change-Id: I8973d7b2717d892407ad93785f92a64b05bdb6b5 Reviewed-on: http://codereview.qt-project.org/6134 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Rename QtMultimediaKit to QtMultimedia.Michael Goddard2011-10-071-0/+1728
There are a few legacy bits left in place so it passes CI, and then qt5.git etc can be updated. Change-Id: I6b082e50e6958c72fdabc2974992e16d90dafa3a Reviewed-on: http://codereview.qt-project.org/5368 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>