summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2024-04-16 14:08:52 +0200
committerBartlomiej Moskal <bartlomiej.moskal@qt.io>2024-04-29 07:37:55 +0200
commit997f528ee26a6c118bb257bda1b47316532c0acf (patch)
tree050a340726373725d20cb68cc435db3e0a074603
parentd5ffa35f484c02a506ba582724cf1012e24033d2 (diff)
Android-FFmpeg: Don't use higher resolution than 4k for video recording
Camera preview crashes when trying to use higher resolution than 4K (like 4096x3072, 4096x2304 or 3072x3072). Crash comes from rendering in OpenGL call (glTexSubImage2D(...)) - take a look on comments in QTBUG-122140. That it why video recording for higher than 4K resolution is turned off. Fixes: QTBUG-122140 Pick-to: 6.7 6.5 Change-Id: I0122bf0cc20af1ade76154e851b3768ef2421c5a Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/multimedia/QtVideoDeviceManager.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtVideoDeviceManager.java b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtVideoDeviceManager.java
index b3ba8f3dc..3339bddc9 100644
--- a/src/android/jar/src/org/qtproject/qt/android/multimedia/QtVideoDeviceManager.java
+++ b/src/android/jar/src/org/qtproject/qt/android/multimedia/QtVideoDeviceManager.java
@@ -137,6 +137,7 @@ public class QtVideoDeviceManager {
return activeArraySize;
}
+ static final int maxResolution = 3840*2160; // 4k resolution
public String[] getStreamConfigurationsSizes(String cameraId, int imageFormat) {
CameraCharacteristics characteristics = getCameraCharacteristics(cameraId);
@@ -148,13 +149,14 @@ public class QtVideoDeviceManager {
if (sizes == null)
return new String[0];
- String[] stream = new String[sizes.length];
+ ArrayList<String> stream = new ArrayList<>();
for (int index = 0; index < sizes.length; index++) {
- stream[index] = sizes[index].toString();
+ if (sizes[index].getWidth() * sizes[index].getHeight() <= maxResolution)
+ stream.add(sizes[index].toString());
}
- return stream;
+ return stream.toArray(new String[0]);
}
public int stringToControlAEMode(String mode) {