| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Dump dot file on play only.
Change-Id: Ide7fe0cad56f06a89604cf40b59b858c9c9d09f2
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Called deleteLater() on the bus helper to ensure the cleanup is handled gracefully.
QGstreamerBusHelperPrivate::doProcessMessage is called on a message from gst,
which it calls QGstreamerPlayerSession::processBusMessage where new media is set
and current helper object is destroyed.
When for loop is ended in doProcessMessage, current object is freed and produces a crash.
Change-Id: Ic9cde97c284406450d4723f1f7f71fa1ea2c0648
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Introduced pushing buffers from QIODevice to appsrc gstreamer element:
player->setMedia("gst-pipeline: appsrc ! ...", io_device);
Also ported to gst 0.10.
Change-Id: I1a84d22c0d5c56fe433d494413c5ab23da7c6bf3
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When new media is set to the player, updating of "show-preroll-frame" property from the video sink
is also requested:
g_object_set(G_OBJECT(m_videoSink), "show-preroll-frame", value, NULL);
This produces emitting of a signal:
g_signal_connect(G_OBJECT(sink), "notify::show-preroll-frame", G_CALLBACK(handleShowPrerollChange), sink);
Inside handleShowPrerollChange() the state of the video sink is requested with infinite timeout:
gst_element_get_state(GST_ELEMENT(sink), &state, NULL, GST_CLOCK_TIME_NONE);
In case if the video sink performed an ASYNC state change,
means changing of the state is pending and need to wait,
this function will block up for infinite timeout.
But probably changing of the state is requested (and should be performed) on the same thread
where it is waiting for this change, it produces a deadlock.
Changing timeout to 10ms to avoid this block.
Fixes: QTBUG-72468
Change-Id: I06235ccfb8f76423f65ed192d5e8de6e60723e72
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
|
|\| |
| | |
| | |
| | | |
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
|