| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\| |
| | |
| | |
| | | |
Change-Id: I82d63ba32a0c9f8b883d00ef1bd68df3a10da96c
|
| |\|
| | |
| | |
| | | |
Change-Id: I03225f5e980a69246b046351f7d7d8e84f102ca0
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In case of EOS the state of the pipeline currently is changed to GST_STATE_NULL,
which releases some resources and it might take some time to restart the playback.
If the media should be played few times, there could be a gap between EOS and new play which can be heard.
Suggesting to set the state to GST_STATE_PAUSED instead.
If there is a need to release resources, empty QMediaContent should be set to the media player.
Change-Id: Ifa5c886abfbea037fd395b7336a5590001d4a7f7
Fixes: QTBUG-75314
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since uploading to gl texture is quite performance-wise operation
introduced integration of opengl plugin which can provide a way
to avoid uploading to texture on each draw on qt's side.
Which potentially fixes some performance issues especially on embedded devices.
Added glupload and glcolorconvert gst elements to pipeline.
For qml apps current opengl context is provided to the gst plugin to share opengl data with.
It allows at the end to just use gl textures that created and filled inside the gst.
For overlay apps, glimagesink element is added.
Requires gstreamer-gl-1.0 to be installed.
Since this plugin is almost always available, so enabling it by default will break behavior of current pipeline
and might introduce some side effects.
Thus also provided QT_GSTREAMER_USE_OPENGL_PLUGIN env var to explicitly enable OpenGL features from gst.
After this change video frames will be texture based.
But it is still possible to map frames to download their data.
In case if the video surface does not support gl textures,
glmemory will be anyway requested, which will lead to uploading data, downloading
and uploading it again to textures in scene graph video node.
Task-number: QTBUG-66162
Change-Id: I32044ba0bf0c0cf90434d72f8991ad00927e1380
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since QMediaContent can contain only one content
and media resources are already deprecated,
canonicalUrl and canonicalRequest are a bit confusing and outdated.
Deprecated and replaced by QMediaContent::request() which already contains the url.
Change-Id: I418006e112f49466b0129bf1e6e1ae629c714538
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
[ChangeLog] Added QVideoFrame::Format_YUV422P.
Change-Id: If7741db00cf0b628d7fc4b1cd3a6e424e0f8e2c0
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: If1977853a4e364f06f91bfe1d2cb128a920050f0
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
Change-Id: Ie0a7534d518cd5758119edc77d8275ac3da2037c
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes an compile failure introduced in commit 67c4ec55.
Fixes: QTBUG-74475
Change-Id: I0dabb72f8b5cdd75336b15515381ff9d9442788f
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I0a12a39a9f3e890e2d5bbece7d8c7d895dac0707
|
| |\|
| | |
| | |
| | | |
Change-Id: I7a99bdc1300e3e19c85967bf67da3481a259e3c1
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When multiple pipelines are created, and one of these gets recreated,
it picks up the last set surface.
This is incorrect, as it needs a surface belonging to the current renderer.
This patch sets the surface before creating pipelines, retrieving it from the current renderer.
Task-number: QTBUG-73557
Change-Id: I0811f7262a0eca57e01361a55515351127520064
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I537d400df8ba9b1aab44a8dcb9df7e18881a6794
|
| |\|
| | |
| | |
| | | |
Change-Id: I947a3b4aaf39e56b9505ae802b8b31c718922639
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-73740
Change-Id: I1de087b63f65bab39351d5446254a8d1832e88c3
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
Fixes: QTBUG-73878
Change-Id: Ia178d41a3e152174865264c71a75e84cfc31462a
Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
Reviewed-by: Gerry Boland <gerry.boland@canonical.com>
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Gst Device Provider now can be used for macOS also.
Added support of avfvidesrc element to be used within camerabin.
Task-number: QTBUG-72125
Change-Id: I69205649c6e75432534e240656d8cb4748ee10cc
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Useful to get some impl specific information from video buffer.
Change-Id: I7fccf2855f0be180bd438a59e4fbaefce15b4ed8
Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ia13d887c3e3bf00b6ded5d052384fc5689b816fe
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduced possibility to set custom pipeline using url.
Now the pipeline should be set only via QMediaPlayer::setMedia using url
with scheme "gst-pipeline".
For example, "gst-pipeline: videotestsrc ! autovideosink"
Since setting the media should be done after renderer in QML,
hence a surface is ready to be used and "qtvideosink" is available in pipelines.
To use it with QVideoWidget, setting the pipeline should be done after passing video output.
Change-Id: Id43f8681069e4bca2eafb154df2c5d446a0ca498
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I233c45824f517c185cb245d8a7d77cab8551fc51
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
We don't need to have the headers of QtMMGstTools
in a separate directory of the QtMultimedia module.
Change-Id: If304ab5ee5741aec7cf7785352f5a571bc4ec240
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: Icf8b9f73c50b16d6f5765040eb7bd918231df94a
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch updates the QGstUtils class to use QRegularExpression in
place of QRegExp which is to be considered deprecated.
Fixes: QTBUG-72589
Change-Id: I67e189c48688b512cc76c884fd2a7e51e1b188f9
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-72125
Change-Id: I12bc684a796c6abb6af3a51edca52011495f4ac9
Reviewed-by: Christian Stromme <christian.stromme@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>
|
|
|
|
|
|
|
| |
This makes it possible to build the GStreamer backend on Windows.
Change-Id: I5b705524072d8bd89a7c9b834201b97e0d01d6cc
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MSVC didn't like the #iffery that was done with GST_STATIC_CAPS(). The
build error was:
qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2121: '#':
invalid character: possibly the result of a macro expansion
qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2059: syntax
error: 'if'
qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2143: syntax
error: missing ';' before '{'
qtmultimedia\src\gsttools\qgstutils.cpp(1311): error C2143: syntax
error: missing ';' before '}'
qtmultimedia\src\gsttools\qgstutils.cpp(1325): error C2059: syntax
error: 'return'
qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2059: syntax
error: '}'
qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2143: syntax
error: missing ';' before '}'
qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2143: syntax
error: missing ';' before '{'
qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2447: '{':
missing function header (old-style formal list?)
Change-Id: Ic9ac64648aba396fc4ef433e73d5c72a8c1c3da1
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|
|
|
|
|
| |
Task-number: QTBUG-70465
Change-Id: I6af46cb8de0b40dc41aaa0b999faf68d102c7b48
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\
| |
| |
| | |
Change-Id: I886c4bda70a2b5a013a445d03487c7e3ef98e858
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Added an ability to define custom pipeline.
Since new pipeline is used, playbin features will not work.
Registered "qtvideosink" gstreamer element to be used in pipelines.
In case if there is a need to render to QML VideoOutput element.
I.e. if a pipeline is "videotestsrc ! qtvideosink" then QGstVideoRendererSink
will be used as a sink and rendering will be done by one of QSGVideoNode's.
In this case there is a need to create a pipeline after video surface is ready.
Also added an ability to override default video sink and define custom one instead.
QGstreamerVideoRendererInterface::setVideoSink() provides functionality to override default one.
QGstreamerPlayerSession::rendererChanged() can be used to check if the renderer is ready
to create a pipeline or set custom video sink.
Task-number: QTBUG-39327
Change-Id: I635d3a07fb9a5dcf30ee63284a849b0ad3438536
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I3a41fab753e5a06fc9f30464edf7d6626e7ae92a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
CameraBin creates default (application/ogg, video/x-theora) video profile
or sets custom defined one, but ONLY on GST_STATE_CHANGE_NULL_TO_READY.
If the camera is already loaded then it is not possible to change the video profile.
Since a video profile was never defined, video/x-theora was always used to record video.
Moved setting video profile before it gets to READY.
It fixes an issue with ignoring CameraBinRecorder::applySettings().
This also changes previous behavior when video/x-theora was always used.
To apply custom video settings it requires to use QMediaRecorder::setVideoSettings
before the camera enters the READY state.
Task-number: QTBUG-69895
Change-Id: I3afbf1f8e7c953e2e49e9cad7e96ea0b18a29d1a
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Gstreamer implementation is located in a plugin.
In case if there is a need to use some internal features
QGstreamerPlayerControl and QGstreamerPlayerSession have been moved
from plugin to QtMultimediaGstTools library.
It allows to request media player control from QMediaService
and use it as QGstreamerPlayerControl.
Change-Id: I8e45480c4cd718b90b90d14a42bc56f6f924eae5
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoids critcial warning ('GLib-CRITICAL **: Source ID 10 was not found when
attempting to remove it') in case the applications initiates another glib
context/main loop.
The new gst_bus_remove_watch() is available since gstreamer API 1.6,
otherwise fall back to g_source_remove().
Task-number: QTBUG-69468
Change-Id: I4343865cb41a2d62ac4b0c0c04f60f13727f56d0
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|
|
|
|
|
|
|
| |
Caught by Clang 6:
qgstutils.cpp:180:1: warning: '/*' within block comment [-Wcomment]
Change-Id: I3840d727dee443318644fffd152938f2b4df5400
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a custom module header, used only for documentation builds, that
pulls in also the QtMultimediaWidgets module.
Several documentation fixes to clean up warnings from clang.
Task-number: QTBUG-67790
Change-Id: I6c1013798a648250c8555eb92684ec3b33ff7531
Reviewed-by: Martin Smith <martin.smith@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
If the handler returns GST_BUS_DROP, it should unref the message,
else the message should not be unreffed by the sync handler.
The message is not going to be unreffed after handler call is made.
Task-number: QTBUG-64142
Change-Id: Ib44f574e95457cdfab66b390c691a8b572987d66
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since vaapi and xvimage sinks require different ranges for the properties:
brightness, contrast, hue, saturation. Added support of vaapi ranges.
It also fixes problem when contrast was always 0 as default value
which led to always show black screen.
- brightness
xvimage: Allowed values: [-1000,1000], Default value: 0
vaapi: Allowed values: [-1,1], Default value: 0
- contrast
xvimage: Allowed values: [-1000,1000], Default value: 0
vaapi: Allowed values: [0,2], Default value: 1
- hue
xvimage: Allowed values: [-1000,1000], Default value: 0
vaapi: Allowed values: [-180,180], Default value: 0
- saturation
xvimage: Allowed values: [-1000,1000], Default value: 0
vaapi: Allowed values: [0,2], Default value: 1
Task-number: QTBUG-23761
Change-Id: I8fda8ce4c6f47c4567e67c670f802a0e9f55af6e
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
Change-Id: I5acdc7e0bd3729b80522dfff0f388cf2507fb111
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
CameraBinSession is never notified if a device
has been unplugged and replaced by new one with the same index.
Since QGstreamerVideoInputDeviceControl is for internal usage and
dependent classes already check against the device name, we don't
need to check it here.
Task-number: QTBUG-64080
Change-Id: I064289335642d5d673f9db1ea206850968002d2e
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Ib509a8c90dd6c7229510a400612cc27a4957d015
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
examples/multimedia/declarative-radio/view.qml
src/plugins/qnx/mediaplayer/mmrenderermediaplayercontrol.h
Change-Id: I97b507878b6de04ec38ddd13530e58b8f72390e4
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The last ioctl argument expect a pointer to an integer, not the integer
value itself. Also, the ioctl call will return 0 on success, or ENOTTY
if the input can't be select, both indicating that the device is a
camera.
Task-number: QTBUG-62245
Change-Id: Ifcf2d30b11ae204036b43daae664f917aaed83ed
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/plugins/qnx/mediaplayer/mmreventmediaplayercontrol.h
Change-Id: Ic6e27742ef6d1af0532ad05902a1431ebd5f449d
|
| |\|
| | |
| | |
| | | |
Change-Id: Ib7c41a4cd7fd6976ebab52673898888dfac53db5
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a new frame is ready to be rendered, our gst sink waits until the
frame is actually processed in the GUI thread, but never more than 300
ms. The time limit is there to avoid potential dead locks in specific
situations. Before, if the wait would timeout, the sink would signal
that there was an error rendering the frame, which would in turn put
the pipeline in an error state and would stop processing any further
frame. We now simply skip the frame if the GUI thread is blocked for
too long and signal that everything went fine to the pipeline.
This was already the logic in place for GStreamer 0.10 (see
qvideosurfacegstsink.cpp).
Task-number: QTBUG-60509
Change-Id: I5173a15340c0e2065bb2fb5ca3bc045ac84ba7e1
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
|/ /
| |
| |
| |
| | |
Change-Id: I3b7601b4a97f8a2b1d2da6ef134f1577846ba713
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I8d96dea9955d4c749b99fffd14cde44ebf1f7290
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch moves the QGstTools lib to a private Qt module and marks
the needed classes and functions with Q_DECL*, to improve
cross-platform abilities. It's the first step to use the GStreamer
backend on macOS and Windows platform.
Change-Id: Idc23c72bcccb52dd501e169e9dfdc227856787fa
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|