summaryrefslogtreecommitdiffstats
path: root/src/multimedia/playback/qmediaplayer.h
Commit message (Collapse)AuthorAgeFilesLines
* Implement QAudioBufferOutput, as a custom output for QMediaPlayerArtem Dyomin2024-05-301-0/+5
| | | | | | | | | | | | | | | | | | | | | | Users want to be able to visualize output audio data from QMediaPlayer. The current patch implements a mechnism allowing getting decoded audio data, so that users could visualize what they want. The class is a part of programmatic IO that we add in 6.8. The functionality will allow us to harden QtMM integration tests. [ChangeLog] Added QAudioBufferOutput allowing to get the decoded audio data from QMediaPlayer Task-number: QTBUG-111094 Change-Id: I5f83e7835965f1e7e47b138da0ce82f650abaa4b Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Tim Blechmann <tim@klingt.org> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
* Rename QAudio namespace to QtAudioVolker Hilsheimer2024-02-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | With the addition of the QtVideo namespace in Qt 6.7 it becomes obvious that the existing QAudio namespace is not named according to the convention for namespaces in Qt. To fix this, we can rename the QAudio namespace to QtAudio, and declare the QAudio namespace as an alias for QtAudio. Public APIs using a QAudio type in their signature need to be exported from a removed_api.cpp file to maintain binary compatibility. Two of those are a signal, which leaves one challenge: string-based connects will have to use the QAudio namespace, in spite of the documentation, as the signal doesn't exist with a QtAudio parameter. Add a \note in the signals' documentation. [ChangeLog][Qt Multimedia][Potentially Source-Incompatible Changes] The QAudio namespace has been renamed to QtAudio, with QAudio still being available as an alias. String based connections to QAudioSink/Source::stateChanged need to continue to use QAudio::State as the parameter. Pick-to: 6.7 Change-Id: If49676ee62e048efbed68bb0e4848a5fefaea2f7 Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add playing property to QMediaPlayerPiotr Srebrny2022-12-171-0/+4
| | | | | | | Pick-to: 6.5 Fixes: QTBUG-100087 Change-Id: If6769d544a66da5e1e740bcbcab4fa735cd4b1b8 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Remove commented API for setting set of QVideoSink as output for playerPiotr Srebrny2022-11-071-3/+0
| | | | | | | | | | | | | | | Reintroducing this API is non-trivial as the current video sink is the main surface that media player and camera view finder render to and depend on. Media player sets up its rendering pipeline to use the rendering hardware associated with the video sink. Thus, when using multiple sinks, one must be selected. Hence, this API does not match well the underlying system. Displaying video in multiple video sinks is easy to achieve with the technique described in the related QTBUG. Fixes: QTBUG-95127 Pick-to: 6.4 6.3 6.2 Change-Id: I751f9cac4a02d9d97c5c386f814cc9391ae73c69 Reviewed-by: Lars Knoll <lars@knoll.priv.no>
* Use SPDX license identifiersLucie Gérard2022-06-241-38/+2
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: Ida08dfe6c84778656e942178c3d39042c9ef1ed2 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Add support for looping to QMediaPlayerLars Knoll2021-10-011-0/+12
| | | | | | | | | | | | Gapless looping is important for a couple of use cases where you want to play back some file a couple of times. Task-number: QTBUG-95010 Pick-to: 6.2 Change-Id: Idd089f0702acaf3cab71987656f017f4c7fa4c54 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Piotr Srebrny <piotr.srebrny@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add Track Selection from QML and updated exampleSamuel Mira2021-08-311-1/+13
| | | | | | | | | | Added Q_PROPERTY in QMediaPlayer.h for the obtaining track metadata and for setting active track Changed mediaplayer QML example to add track information and change. Pick-to: 6.2 Change-Id: I1ff228a858079a87b1253d3c7a1ff24d815f2182 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QMediaPlayer API cleanupsLars Knoll2021-06-161-11/+4
| | | | | | | | | | Remove the autoPlay property, and split up the setSource() method into setSource(QUrl) and setSourceDevice(QIODevice) for more clarity. Change-Id: I3e973fb5b6aa50f192af898f1b07769a201c6845 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Use QAudioOutput in QMediaPlayerLars Knoll2021-06-111-18/+6
| | | | | | | | | | | | | | Adjust QMediaPlayer to the new audio output architecture. One now needs to explicitly add a QAudioOutput to the media player to get audio playback. While this requires two more lines of code to set up the media player, it does make the API consistent between audio and video and also consistent with what we have in QMediaCaptureSession. Adjusted auto tests where required and ported all platforms. Change-Id: I247e915e4862dee6d6bce367b83664b1d1d69726 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Replace deprecated Q_ENUMS with Q_ENUMPiotr Srebrny2021-06-091-3/+3
| | | | | Change-Id: I86d37b25783c844af92a6ef260547cb26848b1fb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Rename QCameraInfo/QAudioDeviceInfo to QCamera/AudioDeviceLars Knoll2021-06-081-3/+3
| | | | | | | | | Those classes represent the physical device and it's properties, thus that name fits best. Change-Id: I0f45fc875ae6110452c1f2fb17f32adbe5155d01 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Clean up the videoOutput() APILars Knoll2021-05-211-5/+7
| | | | | | | | | | | | | | | | | | | | The current API was rather messy, with multiple overloads. Change this and make the videoOutput a QObject * based property. To account for QVideoSink, add a videoSink()/setVideoSink() overload. This also helps identifying the correct sink in all cases. Add some code to protect against deletion of the videoOutput or videoSink from somewhere else. Adjust autotests and fix the qquickvideooutput autotests. With this change we are now passing all existing autotests again on Linux/gstreamer. Change-Id: I77b9863e88a7863abf27ab465fadd9c24f486502 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add QMediaPlayer::bufferedTimeRange()Lars Knoll2021-05-071-0/+2
| | | | | | | | | | The method returns the time range that is buffered locally, ie. available for immediate playback. For local files this is usually the full media. Change-Id: I957e2a55d3e19ad392da9da8e08c976dd246784e Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Cleanup status handling in QMediaPlayerLars Knoll2021-05-031-1/+0
| | | | | | | | | | | | | Remove the UnknownMediaStatus enum (it's really not helpful) and avoid storing a copy of the status in the frontend class. Store the status in the platform media player instance. This requires some further cleanups to avoid that the reimplementations store their own copy. Change-Id: I939e78808f0eaa6a398560661df66c9d986fdd91 Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix most errors in tst_qmediaplayerLars Knoll2021-04-271-3/+2
| | | | | | Change-Id: Ifc116f9aaa45527c3c8e50d8bd2d0c4a467727cd Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Add error handling for QML Camera itemLars Knoll2021-04-191-1/+1
| | | | | | | | | | | | By adding some Q_PROPERTYs and a changed signal for errors. And rename the QMediaPlayer::error() signal to errorOccurred(). This doesn't conflict with the error() getter and makes it consistent with the Camera item. Change-Id: I9d94d86df64066b5b6b2bfa9229d45b80b91b09f Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of QDeclarativeAudioLars Knoll2021-04-161-1/+2
| | | | | | | | | | The class was a wrapper class for QMediaPlayer used for the MediaPlayer and Audio QML types. Remove it, as QMediaPlayer can be exposed directly. Change-Id: I46a13741ceb170db57c8bb54b7a922e483eab537 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* API cleanups in QMediaPlayerLars Knoll2021-04-161-22/+33
| | | | | | | | | Rename some methods with better names and adjust the API so that it also can be used for QML. Change-Id: Ica19675966680416fbe870808336d8fc82065bc1 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Remove the notifyInterval() functionalityLars Knoll2021-04-081-10/+0
| | | | | | | | | This was nothing else than a timer, something you can just as well implement on top of Qt Multimedia if required. Change-Id: I1ef362f1f4ad5a5f85e92bfbb1d73b7710271e5c Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of QMediaPlayer::setCustomRole() and relatedLars Knoll2021-04-081-5/+0
| | | | | | | | | setAudioRole should be enough here. And if more roles are required, let's rather extend the enum. Change-Id: I40194171c6053ffa1d3adf309e77d85a8c6524e2 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Clean up most QAbstractVideoSurface usagesLars Knoll2021-04-061-3/+1
| | | | | | | | | | The class is scheduled to be removed, once all it's usages are gone. QVideoSink is the replacement going forward. Change-Id: Idc0a4133496839bf9f95aa9bcf7d6d37cacd549b Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get windowed playback working againLars Knoll2021-04-061-1/+2
| | | | | | | | | | | And start moving over to the new QVideoSink API. Fun side effect: HW accelerated video decoding does work with this change on Linux. Change-Id: Ic88d13b4fc7028b300349f9bf7ed1a7b3e08d37c Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Cleanups in Q(Platform)MediaPlayerLars Knoll2021-03-151-3/+1
| | | | | | | | | | | | | QPlatformMediaPlayer now has a pointer to the public frontend class. That way it doesn't need to inherit from QObject anymore, and we remove all the signal forwarding code that we had in here until now. Also apply some build fixes for Android. Change-Id: Iad6835a4b818c69a002c37b5f2d5aba36cbb07e2 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Add support for selecting audio/video tracksLars Knoll2021-03-051-11/+12
| | | | | | | | | | Implement this for the gstreamer backend. The API for subtitle tracks is also there, but we do not support displaying those for the moment. Change-Id: Ia561656d63c33ac4ea5d167846d4535820180fb3 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
* Remove manual metatype declarations and registrationsLars Knoll2021-03-021-4/+0
| | | | | | | | Those aren't needed in Qt 6 anymore. Change-Id: I1d19a0dd9c42cfa3fe6d88a56accbe3af2efdf47 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove the QMediaSource inheritance from QMediaPlayerLars Knoll2021-02-171-3/+8
| | | | | | Change-Id: I564aecdbb11df268b40fba6f53c6e2624b056a13 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Rework how to set a video output surfaceLars Knoll2021-02-171-2/+1
| | | | | | | | | | | | | | | | | | | | Setting a video output should not require QMediaService anymore. Reverse the logic, by making QAbstractVideoSurface the primary interface. Use runtime method lookup to get a pointer to the video surface from QVideoWidget/QGraphicsVideoItem. QAbstractVideoSurface is now the primary interface for setting up a video output. We will need to add some API there to allow for windows/fullscreen rendering. With this change, QVideoRendererControl/QVideoWindowControl can also be retired as an abstraction layer in the longer term. Change-Id: Iedff18c6b95fedc7cb914075a8c84081080deab1 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove the notifyInterval functionality from QMediaSourceDoris Verria2021-02-171-0/+9
| | | | | | | | | As a step towards removing QMediaSource from the hierarchy, remove its notifyInterval functionality and implement it in the child classes QMediaPlayer and QMediaRecorder instead. Change-Id: I17aa778fc306881f9e08ab4decbc2d2f3928c686 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove the supportedMimeTypes() API in QMediaPlayerLars Knoll2021-01-291-5/+0
| | | | | | | | | | | We might want to re-add a "supportedContainerFormats()" method later on, but then implement something that actually works. For now it's probably better if the method is simply gone (it was only working on AVFoundation anyway). Change-Id: I3a19529b35c9d7916df7385b406fcccf19d7f484 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add support for selecting the audio output in QMediaPlayerLars Knoll2021-01-221-2/+2
| | | | | | | | | | | | | | | | Add API to select the audio output devive in QMediaPlayer. Implement it where possible. The gstreamer implementation still has issues, on rare occasions, the video stops playing when changing the audio output. There seems to be a race condition somewhere. Windows partially works, but the output device will not get updated after playback started. Change-Id: Ic6e99f7d2e3452915a9870dce45e2e01b079d3c2 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of the QMediaServiceFeaturesInterfaceLars Knoll2021-01-221-13/+3
| | | | | | | | Replace it by one virtual method in the media player control. Change-Id: I18778d2f56b9af8a16418c30c75c973e54b6add8 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of QMediaContentLars Knoll2021-01-221-5/+4
| | | | | | | | | There's no need for it without playlist support in QMediaPlayer. Simply replace it with a QUrl. Change-Id: I28421772b106dad67d321f2c7053558ebfe2a592 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove playlist support from QMediaPlayerLars Knoll2021-01-221-15/+1
| | | | | | | | | | Playlists can be trivially supported on top of QMediaPlayer, as the modified player example shows. There's no need to have all this complexity in QMediaPlayer itself. Change-Id: Iacdd58f7736809606669d150b1ba6046813b2207 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Outcast of API changes for QMediaPlayerLars Knoll2021-01-221-0/+26
| | | | | | Change-Id: I6b8a57423f6b97c67382ea3613b7afdf8f706d71 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Clean up dependencies between multimedia and multimediawidgetsLars Knoll2021-01-221-4/+1
| | | | | | | | | | | Remove the reverse dependency from Qt Multimedia to Qt Multimedia Widgets that we have had throughout Qt 5 by adding a virtual getter for the QObject behind a QMediaSink to the QMediaSink interface. Change-Id: Ia22a4cf761722332f0995a79861a61b9e2296eee Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Make bind/unbind() not virtualLars Knoll2021-01-221-4/+0
| | | | | | | | | They are never reimplemented and should go in the longer term. Change-Id: Ib0f6010fd14e74981750fb70f9e5988e65bebcf6 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Rename QMediaObject to QMediaSourceLars Knoll2021-01-221-2/+2
| | | | | | | | That actually describes what those classes are. Change-Id: I9ce01707bb260ff6452359e211f2c22b5740e61b Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Use QList instead of QVectorJarek Kobus2020-06-251-1/+1
| | | | | | Task-number: QTBUG-84469 Change-Id: Id8d07836a66e4d9223341483bfe0ed251ba2806c Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Remove use of bearer management and the related deprecated classesMårten Nordheim2020-04-061-24/+0
| | | | | | | | | It's now been deleted in QtBase. Task-number: QTBUG-76502 Change-Id: I4dcefa842d66b3444c097315cf7deff5399d6bd9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Deprecate functions taking bearermanagement-related classesMårten Nordheim2020-03-021-3/+21
| | | | | | | | | | | | Bearer Management is going away [ChangeLog][Deprecation Notice] Functions taking or returning QNetworkConfiguration have been deprecated. Change-Id: Iff2e6c5386e5c6ba9da81067ac643bd1eb0d7500 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Introduce rendering to multiple surfacesVaL Doroshchuk2019-11-061-0/+1
| | | | | | | | | | | | | | | | | | | | | QAbstractVideoSurface is used to retrieve and render video frames in particular pixel format. I.e. a backend takes one video surface which asks to provide video frames in one of the supported formats returned from QAbstractVideoSurface::supportedPixelFormats(). So currently there is one source of the video frames and only one video output possible. Introducing QMediaPlayer::setVideoOutput(const QVector<QAbstractVideoSurface *> &) This func takes a list of surfaces, that support at least one shared pixel format, and presents video frames to all of them at the same time. Several surfaces, which do not have any shared pixel formats, will fail to work. Task-number: QTBUG-32939 Change-Id: Ifbdaf692755353fbd5bf3ad74baba1820e3d0237 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Doc: Remove space that causes QDoc warningPaul Wicking2018-04-181-1/+1
| | | | | | | | Remove one space that is the cause of a QDoc warning with Clang. Task-number: QTBUG-67790 Change-Id: Iad60c6b4bdf9570c8c30e5acd641463807f3b416 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Replace Q_NULLPTR with nullptrKevin Funk2017-09-271-2/+2
| | | | | Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add custom audio role API to QMediaPlayerJames McDonnell2017-09-061-1/+6
| | | | | | | | | | | | Allows use of audio roles beyond those known to Qt. [ChangeLog][QMediaPlayer] Added customAudioRole string property to enable use of audio roles beyond those available via the audioRole enum property. Change-Id: Id7ed5d7bc1af0c15910e699f25c97cfed2d48243 Reviewed-by: Christian Stromme <christian.stromme@qt.io> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Add missing override and remove redundant virtualAlexander Volkov2016-12-121-3/+3
| | | | | Change-Id: Ifd439abf21877adff57080489324bea729ee5279 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-03-071-4/+4
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/avfoundation/mediaplayer/mediaplayer.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.pro tests/auto/unit/qmediaserviceprovider/mockserviceplugin5/mockserviceplugin5.pro Change-Id: I5742596230dc510ba2a09eba624429bb67179194
| * Add explicit and make public headers compile with ↵Marc Mutz2016-03-031-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -Wzero-as-null-pointer-constant ... or equivalent. QtBase 5.6 headers already compile that way, so let the other modules follow suit. Cleaned up placement of * and & in parameters as a drive-by. Added explicit where it was missing as a drive-by. This is not a source-incompatible change, because code that breaks by this is a bug. Let's not have this sitting around in an LTS. Task-number: QTBUG-45291 Change-Id: If81ed0c71393aee21d347f5ade4bf3fcc07cd82f Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | 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 audio role API to QMediaPlayer.Jim Hodapp2015-08-101-0/+8
| | | | | | Change-Id: Ia5e3e2fe714f10b6aad62f0a4801c607905c7e0d Task-number: QTBUG-41054 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* QMediaPlayer: handle resource files in a cross-platform way.Yoann Lopes2015-04-071-0/+1
| | | | | | | | | | | | | | | | | | | | It was the backend's responsibility to handle resource files in an appropriate way. In practice, it was either not handled at all, or implemented in an almost identical manner in every backend that does handle it. This is now dealt with in QMediaPlayer, always passing to the backend something it will be able to play. If the backend has the StreamPlayback capability, we pass a QFile from which it streams the data. If it doesn't, we copy the resource to a temporary file and pass its path to the backend. Task-number: QTBUG-36175 Task-number: QTBUG-42263 Task-number: QTBUG-43839 Change-Id: I57b355c72692d02661baeaf74e66581ca0a0bd1d Reviewed-by: Andrew Knight <qt@panimo.net> Reviewed-by: Peng Wu <peng.wu@intopalo.com> Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>