diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-13 13:10:48 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-13 13:10:48 +0100 |
commit | f9014d136f504c6377d1329c822f11a8b58ccdbe (patch) | |
tree | 1c1a752d8ba6b5094b182305d65ca0d0101e1ed0 /src/plugins/android/src/mediacapture | |
parent | bbfccc713546f9e7341fbe1af7482cafbdc4ea25 (diff) | |
parent | 06259f1dfbd9cb2ebd58bba59381a42dc8a758df (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I5575a4ba13212c9bfe73a3de3ef17c6528beafc3
Diffstat (limited to 'src/plugins/android/src/mediacapture')
-rw-r--r-- | src/plugins/android/src/mediacapture/qandroidcamerasession.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 9952c489f..2ff17592b 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -276,33 +276,38 @@ void QAndroidCameraSession::adjustViewfinderSize(const QSize &captureSize, bool if (!m_camera) return; - QSize viewfinderResolution = m_camera->previewSize(); + QSize currentViewfinderResolution = m_camera->previewSize(); const qreal aspectRatio = qreal(captureSize.width()) / qreal(captureSize.height()); - if (viewfinderResolution.isValid() && - qFuzzyCompare(aspectRatio, - qreal(viewfinderResolution.width()) / viewfinderResolution.height())) { + if (currentViewfinderResolution.isValid() && + qAbs(aspectRatio - (qreal(currentViewfinderResolution.width()) / currentViewfinderResolution.height())) < 0.01) { return; } + QSize adjustedViewfinderResolution; QList<QSize> previewSizes = m_camera->getSupportedPreviewSizes(); for (int i = previewSizes.count() - 1; i >= 0; --i) { const QSize &size = previewSizes.at(i); // search for viewfinder resolution with the same aspect ratio - if (qFuzzyCompare(aspectRatio, (static_cast<qreal>(size.width())/static_cast<qreal>(size.height())))) { - viewfinderResolution = size; + if (qAbs(aspectRatio - (qreal(size.width()) / size.height())) < 0.01) { + adjustedViewfinderResolution = size; break; } } - if (m_camera->previewSize() != viewfinderResolution) { + if (!adjustedViewfinderResolution.isValid()) { + qWarning("Cannot find a viewfinder resolution matching the capture aspect ratio."); + return; + } + + if (currentViewfinderResolution != adjustedViewfinderResolution) { if (m_videoOutput) - m_videoOutput->setVideoSize(viewfinderResolution); + m_videoOutput->setVideoSize(adjustedViewfinderResolution); // if preview is started, we have to stop it first before changing its size if (m_previewStarted && restartPreview) m_camera->stopPreview(); - m_camera->setPreviewSize(viewfinderResolution); + m_camera->setPreviewSize(adjustedViewfinderResolution); // restart preview if (m_previewStarted && restartPreview) |