| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 80d46e3a5f64ff2456c40bdba63b6d5c69a32cdd.
Revert of commercial license headers is required for Qt 5.15.3
opensource release.
Task-number: QTBUG-91108
Change-Id: I5c64ffa120f916711e5cf01c828774f8456dec06
Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updated header.COMM to files in tqtc-qtmultimedia. Examples,
tests or documentation files are not updated.
The commercial license header may contain some
additional lines so that its line count equals
with the earlier license header. Reaso for this
is that some autotests use hard coded line numbers
and a change in the line count causes failures in
tests.
Task-number: QTQAINFRA-4171
Change-Id: I86ebf7c3653b55983cefff246c0cb019cbcda8c4
Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
|
|\
| |
| |
| | |
Change-Id: I160b25219c806d9d3a30644fa1a5e589c5aca039
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the video buffer contains crop metadata update a viewport
for the video frame format.
Fixes: QTBUG-82448
Change-Id: Iace150c6c03b48662cc9f0112b45fbe6401d6061
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I3b9b75b9f55bbb13bd5751a49b072102af675c4f
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|/
|
|
|
| |
Change-Id: Ie81bd5a419665756dbdac5dafddf50fdde61019f
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gsttools/qgstvideorenderersink.cpp
src/gsttools/qgstvideorenderersink_p.h
Change-Id: I7fe29161d568fa3f7688abfd2f993d1b16ac3fb9
|
| |
| |
| |
| |
| |
| | |
Change-Id: I96026828c357677c84e880ea85e6e82b8c0495c7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I09f511d894db5e9987ac2b9e42266bb87ef0161d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qtvideosink element is available in pipelines only if QVideoRendererControl
is used, because it requires a video surface.
So if qtvideosink is used inside pipeline but a surface is not available,
created null/dummy surface to render video frames to and show
a warning about this.
Change-Id: I924d3baca994363550b7920176e29e9cd0c4dd1f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|\|
| |
| |
| | |
Change-Id: Id1638836ea3faf16c4ba39119029522b2afbe803
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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: I4e93978fc41788ac7f524c7c290a9ce25452f04e
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
| |
When stopping, we don't actually stop the GStreamer pipeline, we just
pause it and prevent preroll frames from being shown.
We also need to make sure the last presented frame is cleared in that
case, otherwise it stays on screen.
Fixed for both 0.10 and 1.0.
Change-Id: Ibe26a7567f271ae0c3d8819eb9d35d6a95da1c6a
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Presenting a frame originates from a gstreamer thread, we block there
until the frame is actually presented in the main thread. The problem
is that it was presented over and over again until the gstreamer thread
was unblocked.
Make sure a given frame is presented only once.
Change-Id: I46f246740313968637add802f509ebffcc5c19b8
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are cases where blocking operations happening in the video sink
need to be unblocked, that's why GstBaseSink has an unlock() virtual
function. Since our custom video sink blocks when starting and when
rendering a frame (while waiting for the main thread to actually do
these operations), we need to implement the unlock() function in order
to unblock these operations when requested by GstBaseSink.
Change-Id: I5cb19ea689e655f572729d931cefec8a4266c94e
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
|
|
|
|
|
|
|
|
|
| |
We need to implement the show_frame() function from GstVideoSink, which
handles both preroll and normal frames, instead of just
GstBaseSink.render(), which is called only for normal frames.
This was changed for GStreamer 0.10 by 3b20608f.
Change-Id: I4823a575d499cd0d6f9f4cb62e0420e070a05214
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Correctly free resources on deletion.
- Correctly stop the sink. We were stopping only when null caps
were passed to set_caps() but that doesn't seem to always happen.
Implement GstBaseSink.stop() which is always and consistently
called by GStreamer.
- Remove pre-roll support (as done previously for 0.10, see
commit 3b20608f).
Change-Id: I4c5808938f244f4f8a35e121a3a4a862588b752d
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Change-Id: I1c6faa4f59f8eca54f01ef20941fa60161dd7872
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
|
|
0.10 is still used by default.
To enable GStreamer 1.0, pass GST_VERSION=1.0 to qmake
for qtmultimedia.pro.
Contributions from:
Andrew den Exter <andrew.den.exter@qinetic.com.au>
Ilya Smelykh <ilya@videoexpertsgroup.com>
Jim Hodapp <jim.hodapp@canonical.com>
Sergio Schvezov <sergio.schvezov@canonical.com>
Change-Id: I72a46d1170a8794a149bdb5e20767afcc5b7587c
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|