summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@qt.io>2016-08-01 11:52:05 +0200
committerYoann Lopes <yoann.lopes@qt.io>2016-08-01 11:52:05 +0200
commit339944b284e9dd11302dd013f9d9a10ad0d9055a (patch)
treec2952d186b1dbc6f2380448fa2cfd9ec55043da6 /src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
parent53d0a1e5454f4e5beecdea19acb9df11c87cc375 (diff)
parentd7d31d63db5f0029a4a5e24d998601baee8bade0 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Diffstat (limited to 'src/plugins/android/src/mediacapture/qandroidcamerasession.cpp')
-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 9137fbc05..0b082b02b 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
@@ -295,16 +295,27 @@ void QAndroidCameraSession::applyViewfinderSettings(const QSize &captureSize, bo
adjustedViewfinderResolution = vfRes;
} else if (validCaptureSize) {
// search for viewfinder resolution with the same aspect ratio
+ qreal minAspectDiff = 1;
+ QSize closestResolution;
for (int i = previewSizes.count() - 1; i >= 0; --i) {
const QSize &size = previewSizes.at(i);
- if (qAbs(captureAspectRatio - (qreal(size.width()) / size.height())) < 0.01) {
+ const qreal sizeAspect = qreal(size.width()) / size.height();
+ if (qFuzzyCompare(captureAspectRatio, sizeAspect)) {
adjustedViewfinderResolution = size;
break;
+ } else if (minAspectDiff > qAbs(sizeAspect - captureAspectRatio)) {
+ closestResolution = size;
+ minAspectDiff = qAbs(sizeAspect - captureAspectRatio);
}
}
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;
+ }
}
} else {
adjustedViewfinderResolution = previewSizes.last();