From f7ce1b957fab0ae9b5bfe2cdc9e7d2893edb3b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20de=20la=20Rocha?= Date: Tue, 21 Jun 2022 19:28:23 +0200 Subject: Windows: Ensure captured image respects configured resolution Task-number: QTBUG-103591 Change-Id: Id04121da04d3cd6efdd1fd2d479b9d3a6c553133 Reviewed-by: Lars Knoll (cherry picked from commit 6381c371c082323343d26b621aa24209945b7091) Reviewed-by: Qt Cherry-pick Bot --- .../multimedia/windows/mediacapture/qwindowsimagecapture.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp b/src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp index e2a1952db..f09753cf9 100644 --- a/src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp +++ b/src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp @@ -130,13 +130,23 @@ void QWindowsImageCapture::handleVideoFrameChanged(const QVideoFrame &frame) QImage image = frame.toImage(); + QSize size = m_settings.resolution(); + if (size.isValid() && image.size() != size) { + image = image.scaled(size, Qt::KeepAspectRatioByExpanding); + if (image.size() != size) { + int xoff = (image.size().width() - size.width()) / 2; + int yoff = (image.size().height() - size.height()) / 2; + image = image.copy(xoff, yoff, size.width(), size.height()); + } + } + emit imageExposed(m_captureId); emit imageAvailable(m_captureId, frame); emit imageCaptured(m_captureId, image); QMediaMetaData metaData = this->metaData(); metaData.insert(QMediaMetaData::Date, QDateTime::currentDateTime()); - metaData.insert(QMediaMetaData::Resolution, frame.size()); + metaData.insert(QMediaMetaData::Resolution, size); emit imageMetadataAvailable(m_captureId, metaData); -- cgit v1.2.3