summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2015-08-12 20:32:53 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-12 20:32:53 +0000
commit6986410a598fd214cdcbd684c236d071a198c075 (patch)
tree5e03631ccaf1246e5da382b6743e06a2dfc20ec0
parent79fdfecb94f36844d5cc878a2e4199ec5010837a (diff)
parent5679800f382918bb3ca159997609fc551f2a739a (diff)
downloadframeworks_base-6986410a598fd214cdcbd684c236d071a198c075.zip
frameworks_base-6986410a598fd214cdcbd684c236d071a198c075.tar.gz
frameworks_base-6986410a598fd214cdcbd684c236d071a198c075.tar.bz2
am 5679800f: am 242ff8a8: Merge "Camera: Fix framework bugs with DEPTH-only camera devices" into mnc-dev
* commit '5679800f382918bb3ca159997609fc551f2a739a': Camera: Fix framework bugs with DEPTH-only camera devices
-rw-r--r--core/java/android/hardware/camera2/params/StreamConfigurationMap.java21
-rw-r--r--media/java/android/media/ImageReader.java28
2 files changed, 36 insertions, 13 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");
}
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index c97de5d..2164eec 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -679,17 +679,31 @@ public class ImageReader implements AutoCloseable {
@Override
public int getWidth() {
throwISEIfImageIsInvalid();
- mWidth = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getWidth() :
- nativeGetWidth(mFormat);
- return mWidth;
+ int width;
+ switch(getFormat()) {
+ case ImageFormat.JPEG:
+ case ImageFormat.DEPTH_POINT_CLOUD:
+ width = ImageReader.this.getWidth();
+ break;
+ default:
+ width = nativeGetWidth(mFormat);
+ }
+ return width;
}
@Override
public int getHeight() {
throwISEIfImageIsInvalid();
- mHeight = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getHeight() :
- nativeGetHeight(mFormat);
- return mHeight;
+ int height;
+ switch(getFormat()) {
+ case ImageFormat.JPEG:
+ case ImageFormat.DEPTH_POINT_CLOUD:
+ height = ImageReader.this.getHeight();
+ break;
+ default:
+ height = nativeGetHeight(mFormat);
+ }
+ return height;
}
@Override
@@ -826,8 +840,6 @@ public class ImageReader implements AutoCloseable {
private long mTimestamp;
private SurfacePlane[] mPlanes;
- private int mHeight = -1;
- private int mWidth = -1;
private int mFormat = ImageFormat.UNKNOWN;
// If this image is detached from the ImageReader.
private AtomicBoolean mIsDetached = new AtomicBoolean(false);