summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndré de la Rocha <andre.rocha@qt.io>2022-06-21 19:28:23 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-06-22 15:02:30 +0000
commitf7ce1b957fab0ae9b5bfe2cdc9e7d2893edb3b09 (patch)
tree598358b0652820a9f412ef989256e659d5811fbc
parent77805b9af37e8b94e6c3ca669ac502bf06287498 (diff)
Windows: Ensure captured image respects configured resolution
Task-number: QTBUG-103591 Change-Id: Id04121da04d3cd6efdd1fd2d479b9d3a6c553133 Reviewed-by: Lars Knoll <lars.knoll@gmail.com> (cherry picked from commit 6381c371c082323343d26b621aa24209945b7091) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp12
1 files changed, 11 insertions, 1 deletions
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);