Merge "Merge "Camera: Use fallback key if the requested key returns null" into pi-dev am: 062c050d01" into pi-dev-plus-aosp

This commit is contained in:
Android Build Merger (Role)
2018-05-24 18:55:51 +00:00
committed by Android (Google) Code Review
3 changed files with 48 additions and 1 deletions

View File

@@ -76,6 +76,15 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri
mKey = new CameraMetadataNative.Key<T>(name, type, vendorId);
}
/**
* Visible for testing and vendor extensions only.
*
* @hide
*/
public Key(String name, String fallbackName, Class<T> type) {
mKey = new CameraMetadataNative.Key<T>(name, fallbackName, type);
}
/**
* Visible for testing and vendor extensions only.
*

View File

@@ -87,6 +87,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> {
*
* @hide
*/
public Key(String name, String fallbackName, Class<T> type) {
mKey = new CameraMetadataNative.Key<T>(name, fallbackName, type);
}
/**
* Visible for testing and vendor extensions only.
*
* @hide
*/
public Key(String name, Class<T> type) {
mKey = new CameraMetadataNative.Key<T>(name, type);
}

View File

@@ -84,6 +84,7 @@ public class CameraMetadataNative implements Parcelable {
private final Class<T> mType;
private final TypeReference<T> mTypeReference;
private final String mName;
private final String mFallbackName;
private final int mHash;
/**
@@ -96,12 +97,29 @@ public class CameraMetadataNative implements Parcelable {
throw new NullPointerException("Type needs to be non-null");
}
mName = name;
mFallbackName = null;
mType = type;
mVendorId = vendorId;
mTypeReference = TypeReference.createSpecializedTypeReference(type);
mHash = mName.hashCode() ^ mTypeReference.hashCode();
}
/**
* @hide
*/
public Key(String name, String fallbackName, Class<T> type) {
if (name == null) {
throw new NullPointerException("Key needs a valid name");
} else if (type == null) {
throw new NullPointerException("Type needs to be non-null");
}
mName = name;
mFallbackName = fallbackName;
mType = type;
mTypeReference = TypeReference.createSpecializedTypeReference(type);
mHash = mName.hashCode() ^ mTypeReference.hashCode();
}
/**
* Visible for testing only.
*
@@ -115,6 +133,7 @@ public class CameraMetadataNative implements Parcelable {
throw new NullPointerException("Type needs to be non-null");
}
mName = name;
mFallbackName = null;
mType = type;
mTypeReference = TypeReference.createSpecializedTypeReference(type);
mHash = mName.hashCode() ^ mTypeReference.hashCode();
@@ -134,6 +153,7 @@ public class CameraMetadataNative implements Parcelable {
throw new NullPointerException("TypeReference needs to be non-null");
}
mName = name;
mFallbackName = null;
mType = (Class<T>)typeReference.getRawType();
mTypeReference = typeReference;
mHash = mName.hashCode() ^ mTypeReference.hashCode();
@@ -494,7 +514,16 @@ public class CameraMetadataNative implements Parcelable {
int tag = nativeGetTagFromKeyLocal(key.getName());
byte[] values = readValues(tag);
if (values == null) {
return null;
// If the key returns null, use the fallback key if exists.
// This is to support old key names for the newly published keys.
if (key.mFallbackName == null) {
return null;
}
tag = nativeGetTagFromKeyLocal(key.mFallbackName);
values = readValues(tag);
if (values == null) {
return null;
}
}
int nativeType = nativeGetTypeFromTagLocal(tag);