diff options
author | Stef Boerrigter <stef_boerrigter@hotmail.com> | 2020-03-16 09:09:46 +0100 |
---|---|---|
committer | Stef Boerrigter <stef_boerrigter@hotmail.com> | 2020-04-16 09:40:26 +0100 |
commit | 19f6faf671438dc9c5165733a1b060fe2dfe1956 (patch) | |
tree | 3fa506f7c5ff54013887ef12403e64d0dc160fdb /src/gsttools/qgstvideorenderersink.cpp | |
parent | 7bd13d3f98a6f1f9cf7aed122fd2f301fbae9d62 (diff) | |
download | qtmultimedia-19f6faf671438dc9c5165733a1b060fe2dfe1956.tar.gz |
GSTVideoRender: Update viewport on gst video buffer crop metadata
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>
Diffstat (limited to 'src/gsttools/qgstvideorenderersink.cpp')
-rw-r--r-- | src/gsttools/qgstvideorenderersink.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gsttools/qgstvideorenderersink.cpp b/src/gsttools/qgstvideorenderersink.cpp index 3b458a978..13edcb820 100644 --- a/src/gsttools/qgstvideorenderersink.cpp +++ b/src/gsttools/qgstvideorenderersink.cpp @@ -141,6 +141,19 @@ bool QGstDefaultVideoRenderer::present(QAbstractVideoSurface *surface, GstBuffer if (!videoBuffer) videoBuffer = new QGstVideoBuffer(buffer, m_videoInfo); + 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) { +#ifdef DEBUG_VIDEO_SURFACE_SINK + qDebug() << Q_FUNC_INFO << " Update viewport on Metadata: [" << meta->height << "x" << meta->width << " | " << meta->x << "x" << meta->y << "]"; +#endif + //Update viewport if data is not the same + m_format.setViewport(vp); + surface->start(m_format); + } + } + QVideoFrame frame( videoBuffer, m_format.frameSize(), |