mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-29 05:01:23 +00:00
qml6glsrc: Reduce capture delay
In qml6glsrc, we capture the application by copying the back buffer into our own FBO. The afterRendering() signal is too soon as from the apitrace, the application has been rendered into a QT internal buffer, to be used as a cache for refresh. Use afterFrameEnd() signal instead. This works with no delay on GLES. With GL it seems to reduce from 2 to 1 frame delay (this may be platform specific). A different recording technique would need to be used to completely remove this delay. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7351>
This commit is contained in:
parent
90e58aec3c
commit
03cf7f6445
2 changed files with 3 additions and 3 deletions
|
@ -103,7 +103,7 @@ Qt6GLWindow::Qt6GLWindow (QWindow * parent, QQuickWindow *src)
|
|||
this->priv->internal_format = GL_RGBA;
|
||||
|
||||
connect (source, SIGNAL(beforeRendering()), this, SLOT(beforeRendering()), Qt::DirectConnection);
|
||||
connect (source, SIGNAL(afterRendering()), this, SLOT(afterRendering()), Qt::DirectConnection);
|
||||
connect (source, SIGNAL(afterFrameEnd()), this, SLOT(afterFrameEnd()), Qt::DirectConnection);
|
||||
if (source->isSceneGraphInitialized())
|
||||
source->scheduleRenderJob(new RenderJob(std::bind(&Qt6GLWindow::onSceneGraphInitialized, this)), QQuickWindow::BeforeSynchronizingStage);
|
||||
else
|
||||
|
@ -201,7 +201,7 @@ Qt6GLWindow::beforeRendering()
|
|||
}
|
||||
|
||||
void
|
||||
Qt6GLWindow::afterRendering()
|
||||
Qt6GLWindow::afterFrameEnd()
|
||||
{
|
||||
gboolean ret;
|
||||
guint width, height;
|
||||
|
|
|
@ -45,7 +45,7 @@ public:
|
|||
|
||||
private Q_SLOTS:
|
||||
void beforeRendering ();
|
||||
void afterRendering ();
|
||||
void afterFrameEnd ();
|
||||
void onSceneGraphInitialized ();
|
||||
void onSceneGraphInvalidated ();
|
||||
|
||||
|
|
Loading…
Reference in a new issue