diff options
| -rw-r--r-- | core/java/android/hardware/camera2/params/StreamConfigurationMap.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java index 8be49e8f3ccf..6cc7fece2898 100644 --- a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java +++ b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java @@ -1269,6 +1269,11 @@ public final class StreamConfigurationMap { private Size[] getInternalFormatSizes(int format, int dataspace, boolean output, boolean highRes) { + // All depth formats are non-high-res. + if (dataspace == HAL_DATASPACE_DEPTH && highRes) { + return new Size[0]; + } + SparseIntArray formatsMap = !output ? mInputFormats : dataspace == HAL_DATASPACE_DEPTH ? mDepthOutputFormats : @@ -1287,6 +1292,8 @@ public final class StreamConfigurationMap { StreamConfiguration[] configurations = (dataspace == HAL_DATASPACE_DEPTH) ? mDepthConfigurations : mConfigurations; + StreamConfigurationDuration[] minFrameDurations = + (dataspace == HAL_DATASPACE_DEPTH) ? mDepthMinFrameDurations : mMinFrameDurations; for (StreamConfiguration config : configurations) { int fmt = config.getFormat(); @@ -1295,8 +1302,8 @@ public final class StreamConfigurationMap { // Filter slow high-res output formats; include for // highRes, remove for !highRes long duration = 0; - for (int i = 0; i < mMinFrameDurations.length; i++) { - StreamConfigurationDuration d = mMinFrameDurations[i]; + for (int i = 0; i < minFrameDurations.length; i++) { + StreamConfigurationDuration d = minFrameDurations[i]; if (d.getFormat() == fmt && d.getWidth() == config.getSize().getWidth() && d.getHeight() == config.getSize().getHeight()) { @@ -1304,7 +1311,8 @@ public final class StreamConfigurationMap { break; } } - if (highRes != (duration > DURATION_20FPS_NS)) { + if (dataspace != HAL_DATASPACE_DEPTH && + highRes != (duration > DURATION_20FPS_NS)) { continue; } } |