summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2015-08-11 13:33:37 -0700
committerEino-Ville Talvala <etalvala@google.com>2015-08-11 15:04:56 -0700
commit72064af7e75f7e3b2eb2e58a3af408861eb8c4e9 (patch)
treea123e4b89697df201bfedab2410f756cc16f9953 /core
parent301dfe08bc662e9475739309a0ccbce2231ecddb (diff)
downloadframeworks_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.java21
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");
}