From 58376e22a0f93c48ed93ff66bf8dd90e4219342f Mon Sep 17 00:00:00 2001 From: Stef Boerrigter Date: Tue, 10 Mar 2020 12:27:07 +0100 Subject: [PATCH] Update viewport if cropped video metadata available --- src/gsttools/qgstvideorenderersink.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/gsttools/qgstvideorenderersink.cpp b/src/gsttools/qgstvideorenderersink.cpp index 597b974..0c4f8bb 100644 --- a/src/gsttools/qgstvideorenderersink.cpp +++ b/src/gsttools/qgstvideorenderersink.cpp @@ -90,6 +90,23 @@ void QGstDefaultVideoRenderer::stop(QAbstractVideoSurface *surface) bool QGstDefaultVideoRenderer::present(QAbstractVideoSurface *surface, GstBuffer *buffer) { m_flushed = false; + + auto meta = gst_buffer_get_video_crop_meta (buffer); + if (meta) + { + QRect vp(meta->x, meta->y, meta->width, meta->height); + if(m_format.viewport() != vp) + { + //qDebug() << "Metadata: " << meta->height << "x" << meta->width << " : " << meta->x << "x" << meta->y << " || Updating viewport";// << vp; + //Update viewport if data is not the same + m_format.setViewport(vp); + surface->start(m_format); + } + else + { + //qDebug() << "Viewport matches updated crop metadata, no change required.." + } + } QVideoFrame frame( new QGstVideoBuffer(buffer, m_videoInfo), m_format.frameSize(), -- 2.7.4