| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Pick-to: 6.4
Change-Id: Ibcf3c3385ba00a2bd4f1c89811906be6437dc56f
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With QVideoWidget window can go fullscreen either by calling
setFullScreen or directly QWidget::showFullScreen. However, a variable
describing window state is only updated when using setFullScreen
function, which becomes inconsisten when using QWidget::showNormal
when going out of full screen mode. This patch fixes this inconsistency
and test tst_QVideoWidget::fullScreen().
Pick-to: 6.2 6.3 6.4
Change-Id: I82c496fcd32fda6a32f928564d2502073faf0064
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the classes from src/multimedia/spatial into its own
QtSpatialAudio library.
This is required to keep Qt Multimedia compatible with the
requirements from the KDE Free Qt Foundation agreement, as
well as to keep license compatibility with existing applications
licensed under GPLv2 that are using Qt Multimedia.
Moving the classes into a module of their own required a few
additional changes to ensure we generate proper documentation
for the new spatial audio module.
To align the API between C++ and QML, the QML import was also
renamed to QtQuick3D.SpatialAudio.
Pick-to: 6.4
Change-Id: Ia3f9ac5e1edac4b1e07d3302d7a229ada5bdc038
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
setFullScreen(true) would always cause the video widget to be shown
on the primary screen instead of the current screen the app is being
shown on.
The reason for this is that setting the Qt::Window flag on the widget
will cause its position to be interpreted as relative to the screen
instead of its parent. This position is usually on the first screen,
so showFullScreen() will show it there.
Fix this by moving the video widget to the physical position on the
screen that it had inside its widget hierarchy before calling
showFullScreen(). Also restore that position on setFullScreen(false),
so that its position is correctly restored even without layouts.
Fixes: QTBUG-97895
Pick-to: 6.2
Change-Id: I5207afb276e9369938d1c3d8814d9878367c6895
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|
|
|
|
|
|
|
|
| |
Correct various mistakes in our overview documentation and
add some more detail in various places.
Pick-to: 6.2 6.2.0
Change-Id: Iff26e7f13646a7a421be49dcb473f64732367558
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Refactor QVideoWidget to implement HW accelerated rendering by simply
embedding a QVideoWindow as a child and making it transparent for
input, so the input events continue to go to the QVideoWidget.
Pick-to: 6.2
Change-Id: I0dd02ebb784a1d6a51e56aa6b629df0b947292ac
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This implements HW accelerated video rendering to a QWindow using
RHI and the textures we get from the video pipeline.
This change was triggered by difficulties to create a full HW
accelerated path for QVideoWidget on gstreamer. The reason was
that the vaapisink that we've been using so far has quite a few
bugs and been deprecated by the gstreamer maintainers.
This will in a follow-up change allow us to unify the video
pipelines for Qt Quick and Widgets, so that we only need to
support one way of doing HW accelerated rendering on the
backend side.
Done-with: Laszlo Agocs <laszlo.agocs@qt.io>
Pick-to: 6.2
Change-Id: I143e4416dd8b1cec4e5507e2e5af1eb3d37a496c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The next couple of commits will simplify how we handle HW
accelerated rendering by also going through the RHI code
path for QVideoWidget. This implies that we can remove quite
a few properties from QVideoSink, as those were only required
for the old windowed code path.
This does for the moment disable all HW acceleration on
QVideoWidget. Support for that will be re-added in follow-up
changes.
Pick-to: 6.2
Change-Id: I1474f44ed7468eb263fbf4de75f75f9af16b7773
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
This makes a lot more sense as the videoframe can now paint itself.
It also allows us to removes a lot of API from QVideoSink that never
quite fit in there.
Pick-to: 6.2
Change-Id: I70f32416a0e3850c2a9f8ee3853f38b06031905f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Define enums for mediaformat, audioformat, videoformat
Remove doc references to qdelcarativecamerafocus
Remove brightness and related properties from QVideoWidget
Remove QMediaPlayer::setVolume() doc references
Remove QMediaRecorder::setVolume() doc references
Document missing QAudioFormat::SampleFormat enums
Update or remove old function or class links in docs
Spelling correction, sentence shortening for clarity
Remove qdoc comments in a namespace that is not to be documented
Pick-to: 6.2
Change-Id: If0e56da12535fd31bd4fbe97fd83c3a38df22dbc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Correctly respect the aspectRatioMode when calculating the
render rectangle. This works fine on xvimagesink. The vaapisink
doesn't fully respect it (at least with current AMD drivers), but
that is a bug in the vaapi implementation.
Set the fullscreen flag on the sink when going fullscreen, so that
it can apply any possible optimizations.
Clean up the code dealing with brightness correction etc, as that
is currently not used or supported.
Change-Id: I8e4d005901fa1ee59892d647f9359d8edb96664e
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
| |
We currently do not support those on all platforms and most native
APIs do not offer those kind of controls neither anymore.
Change-Id: Ifa58d206796fba3b10dfa111be1c6f79a996539a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
| |
MSVC doesn't like */* sequences :)
Change-Id: I4bebcea733f803b4cf21de184295836bc3651902
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
| |
Change-Id: Ifa7bcd4507948cd61909a11af203852ee1586787
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
| |
This passes now, but might require some more massaging to get
correct display rects for the widget case.
Change-Id: I4673240bb1afacfe714580e586e293c09f690d11
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
Doesn't yet fix all test failures, but it's an
improvement.
Change-Id: I775857f1fb580b78ae137dc71ee445a15eafd0a7
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
| |
Change-Id: I77bf951d9e334d92b65d0f9f5c37c22033e91060
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
| |
Handle a couple of error cases without crashing.
Change-Id: Id4e2e1197bc7daa0351130117ed07e7a9c6fb9fa
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Normalize ranges of brightness and friends to [-1, 1] and use
floating point numbers.
* Remove getters for values from the platform API, rather store them
in the frontend. This simplifies the work that needs to be done on
the backend side.
Change-Id: I8d63dacaa6b2873b33e17fcd7831e41173109a7e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
| |
The class is used exclusively together with video frames to
describe their format, so the name should reflect that.
Change-Id: I10bec7a0556b22c69ac790a99282e1376ce4af97
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This didn't show on the other platforms that used native
mechanisms to determine the window size, but is required for
this to work correctly on Windows.
Change-Id: I20bbb12dcfddd56bd6c1684a69ee836807e0b679
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
| |
This makes the camera work in windowed and not SW rendering modes
again.
Change-Id: I2f8c2c3f445705c3f9a4619ad33330500cf2a487
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make sure we can deliver both SW buffers, textures and render onto
native surfaces.
As we need different implementations for the player and capture
pipelines, AVFVideoSink is now acting as a proxy to the class
doing the actual rendering.
Fold the windowed mode handling into the AVFVideoRenderer class and use
it when rendering windowed or fullscreen.
This also required some changes in AVFMediaPlayer to ensure that we always
have a AVPlayerLayer available because loading content happends asynchronously,
but we need the layer directly.
With this playback works both onto QVideoWidget and the QML VideoItem, although
there are some R<->B issues when rendering using software.
Change-Id: Ie6fe901f35989c5076eedaea4edf3b8c4d3f35f4
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
| |
Change-Id: I609af1873e34e64b220310de559a795bb6163bc3
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
Retrieve SW buffers from gstreamer if that's what the sink
wants.
Change-Id: I3598594a219e436d6f64c5eefbc001f3f46d3789
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This class can nicely serve as the basis class for the platform
specific new video sink API.
For now it will support windowed rendering and the non windowed
mode will get folded into this class in follow-up commits.
Clean up the QVideoWidget code and always use QVideoSink there to
make the transition easier to handle. This implies that QVideoWidget
will right now only work in windowed mode.
Change-Id: I6db4509ceaa142001ffd59b60406aa98c71f5fc0
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>
|
|
|
|
|
|
|
|
| |
We'll need the code there for the new QVideoSink
Change-Id: Iae4681770b2d64e1c0f1e96db2076dd4ec2315bf
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
It's a pure implementation detail in the backends now (and
can in cases even get removed there). No need for an
interface.
Change-Id: Ib61cebe80d0369424d4ee681992e4abc80c11a14
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
QMediaPlatformPlayerInterface didn't do anything anymore but
to create a QMediaPlayerControl. So we might as well remove
that layer.
Change-Id: I1481188384d5eb25c845317835c44ec0be8c9099
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
| |
Those aren't used anymore, get rid of them.
Change-Id: I5a17f18a3c87c2c13a9009b1f99ef9e708f7636a
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
And remove some now unused code. We've lost the ability
to render to native window handles directly, but that should
be handled through QAbstractVideoSurface API additions.
Change-Id: I644a38ea045219e715dd77346bd4d94529df9b07
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QVideoWindowControl offers more or less the same functionality,
as both require a native surface to use for an overlay.
This should in the longer term be re-architected towards a
"native surface" interface for rendering. And the only platforms
that did try to implement this were gstreamer and AVFoundation.
Change-Id: I3adcc38dde9ccd20273c7a7fb1712ce97bbdad48
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
There's no need for having those in plugins and we can
further remove abstractions and simplify our code if
the code is directly compiled into Qt Multimedia.
Change-Id: I5267a6a776375d99be8f0de4207f0288d963e620
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>
|
|
|
|
|
|
|
|
|
|
| |
The class was serving no purpose that QObject doesn't offer,
so remove that layer and use QObject as the base class for
those controls.
Change-Id: Icd434fabe88cbdba5fa54eafe6ba97ac08be61f3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
| |
Do some coding style fixes proposed by clang-tidy.
Change-Id: I62584767fd7af2f98ac02653c1105d64188f5554
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
|
|
|
|
| |
Run clang-tidy over the code base with some code modernization
options.
Change-Id: I9e74d1225bce333e74224e3b92c02c7e9884d8f5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
|
|
|
|
|
| |
Change-Id: Ia64872eef299b2583a21ea40403cb0d281baf3e6
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
|
|
|
|
|
|
|
|
| |
QOpenGL API should be used instead.
Task-number: QTBUG-74409
Fixes: QTBUG-81902
Change-Id: I80d09cba79248451cf211eabd87651301ae18b63
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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>
|
|
|
|
|
|
|
| |
It is being deprecated.
Change-Id: I26b871fe9b989972ab1d2c18de344dc9c9275e9f
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gsttools/qgstvideorenderersink.cpp
src/gsttools/qgstvideorenderersink_p.h
Change-Id: I7fe29161d568fa3f7688abfd2f993d1b16ac3fb9
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-76574
Change-Id: I69ef47bbd01967c3d7a0c5d1554fcdd29619ebfa
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Replace the usages of deprecated APIs by corresponding
alternatives.
- Made the tests for deprecated APIs to compile conditionally,
based on the deprecation version.
Task-number: QTBUG-76491
Task-number: QTBUG-76540
Task-number: QTBUG-76541
Change-Id: Ifd397dae9b3ebc2ba2504db7baa2d8ff21bfb3a7
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|/
|
|
|
|
|
|
| |
Task-number: QTBUG-72968
Change-Id: I31da3bd3e8a775243b94e02e3659e2d00e46b9b6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\
| |
| |
| | |
Change-Id: I947a3b4aaf39e56b9505ae802b8b31c718922639
|
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-73464
Change-Id: I5d1052dec14bbe6ee69b348352991d14d63b9c76
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|/
|
|
|
|
|
|
|
|
| |
videowidget.cpp:625:32: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations]
qgstreamervideowidget.cpp:56:36: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations]
qgstreamervideowidget.cpp:56:36: warning: 'Background' is deprecated: Use QPalette::Window instead [-Wdeprecated-declarations]
qgstreamervideowidget.cpp:83:55: warning: 'const QBrush& QPalette::background() const' is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations]
Change-Id: Ieb55a57c5672d3023a48461ec347fbb30210fd1e
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
|