diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2015-08-11 13:33:37 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2015-08-11 15:04:56 -0700 |
commit | 72064af7e75f7e3b2eb2e58a3af408861eb8c4e9 (patch) | |
tree | a123e4b89697df201bfedab2410f756cc16f9953 /core | |
parent | 301dfe08bc662e9475739309a0ccbce2231ecddb (diff) | |
download | frameworks_base-72064af7e75f7e3b2eb2e58a3af408861eb8c4e9.zip frameworks_base-72064af7e75f7e3b2eb2e58a3af408861eb8c4e9.tar.gz frameworks_base-72064af7e75f7e3b2eb2e58a3af408861eb8c4e9.tar.bz2 |
Camera: Fix framework bugs with DEPTH-only camera devices
Mostly due to no standard stream configurations being defined,
and for the correct overrides for DEPTH_POINT_CLOUD format.
Bug: 20537722
Change-Id: I8a18f5f68697a09dcc4d7555e51728193fe7f333
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/hardware/camera2/params/StreamConfigurationMap.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java index 8e0eab2..e71e49f 100644 --- a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java +++ b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java @@ -98,9 +98,19 @@ public final class StreamConfigurationMap { HighSpeedVideoConfiguration[] highSpeedVideoConfigurations, ReprocessFormatsMap inputOutputFormatsMap, boolean listHighResolution) { - mConfigurations = checkArrayElementsNotNull(configurations, "configurations"); - mMinFrameDurations = checkArrayElementsNotNull(minFrameDurations, "minFrameDurations"); - mStallDurations = checkArrayElementsNotNull(stallDurations, "stallDurations"); + + if (configurations == null) { + // If no color configurations exist, ensure depth ones do + checkArrayElementsNotNull(depthConfigurations, "depthConfigurations"); + mConfigurations = new StreamConfiguration[0]; + mMinFrameDurations = new StreamConfigurationDuration[0]; + mStallDurations = new StreamConfigurationDuration[0]; + } else { + mConfigurations = checkArrayElementsNotNull(configurations, "configurations"); + mMinFrameDurations = checkArrayElementsNotNull(minFrameDurations, "minFrameDurations"); + mStallDurations = checkArrayElementsNotNull(stallDurations, "stallDurations"); + } + mListHighResolution = listHighResolution; if (depthConfigurations == null) { @@ -124,7 +134,7 @@ public final class StreamConfigurationMap { } // For each format, track how many sizes there are available to configure - for (StreamConfiguration config : configurations) { + for (StreamConfiguration config : mConfigurations) { int fmt = config.getFormat(); SparseIntArray map = null; if (config.isOutput()) { @@ -159,7 +169,8 @@ public final class StreamConfigurationMap { mDepthOutputFormats.get(config.getFormat()) + 1); } - if (mOutputFormats.indexOfKey(HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) < 0) { + if (configurations != null && + mOutputFormats.indexOfKey(HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) < 0) { throw new AssertionError( "At least one stream configuration for IMPLEMENTATION_DEFINED must exist"); } |