diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2024-04-16 14:08:52 +0200 |
---|---|---|
committer | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2024-04-29 07:37:55 +0200 |
commit | 997f528ee26a6c118bb257bda1b47316532c0acf (patch) | |
tree | 050a340726373725d20cb68cc435db3e0a074603 | |
parent | d5ffa35f484c02a506ba582724cf1012e24033d2 (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.java | 8 |
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) { |