| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Pick-to: 6.5
Fixes: QTBUG-100087
Change-Id: If6769d544a66da5e1e740bcbcab4fa735cd4b1b8
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: I86d37b25783c844af92a6ef260547cb26848b1fb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Ifc116f9aaa45527c3c8e50d8bd2d0c4a467727cd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I564aecdbb11df268b40fba6f53c6e2624b056a13
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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 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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: I6b8a57423f6b97c67382ea3613b7afdf8f706d71
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Task-number: QTBUG-84469
Change-Id: Id8d07836a66e4d9223341483bfe0ed251ba2806c
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Change-Id: Ifd439abf21877adff57080489324bea729ee5279
Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
-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>
|
|/
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Change-Id: Ia5e3e2fe714f10b6aad62f0a4801c607905c7e0d
Task-number: QTBUG-41054
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|