summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/android/src/mediacapture/qandroidcamerasession.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
index 7b065c8c4..df9f0367b 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
@@ -261,17 +261,28 @@ void QAndroidCameraSession::adjustViewfinderSize(const QSize &captureSize, bool
// search for viewfinder resolution with the same aspect ratio
const qreal aspectRatio = qreal(captureSize.width()) / qreal(captureSize.height());
QList<QSize> previewSizes = m_camera->getSupportedPreviewSizes();
+ qreal minAspectDiff = 1;
+ QSize closestResolution;
for (int i = previewSizes.count() - 1; i >= 0; --i) {
const QSize &size = previewSizes.at(i);
- if (qAbs(aspectRatio - (qreal(size.width()) / size.height())) < 0.01) {
+ const qreal sizeAspect = qreal(size.width()) / size.height();
+ if (qFuzzyCompare(aspectRatio, sizeAspect)) {
adjustedViewfinderResolution = size;
break;
+ } else if (minAspectDiff > qAbs(sizeAspect - aspectRatio)) {
+ closestResolution = size;
+ minAspectDiff = qAbs(sizeAspect - aspectRatio);
}
}
if (!adjustedViewfinderResolution.isValid()) {
qWarning("Cannot find a viewfinder resolution matching the capture aspect ratio.");
- return;
+ if (closestResolution.isValid()) {
+ adjustedViewfinderResolution = closestResolution;
+ qWarning("Using closest viewfinder resolution.");
+ } else {
+ return;
+ }
}
}