diff options
-rw-r--r-- | src/plugins/multimedia/windows/mediacapture/qwindowsimagecapture.cpp | 12 |
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); |