am 758e6a8f: Merge "ImageReader: Image getFormat should return the Image buffer format" into mnc-dev

* commit '758e6a8f70b28e1584588b06b12d227deeefba74':
  ImageReader: Image getFormat should return the Image buffer format
This commit is contained in:
Zhijun He
2015-05-14 21:55:49 +00:00
committed by Android Git Automerger
2 changed files with 25 additions and 10 deletions

View File

@@ -655,26 +655,26 @@ public class ImageReader implements AutoCloseable {
@Override @Override
public int getFormat() { public int getFormat() {
throwISEIfImageIsInvalid(); throwISEIfImageIsInvalid();
int readerFormat = ImageReader.this.getImageFormat();
// Assume opaque reader always produce opaque images.
mFormat = (readerFormat == ImageFormat.PRIVATE) ? readerFormat :
nativeGetFormat(readerFormat);
return mFormat; return mFormat;
} }
@Override @Override
public int getWidth() { public int getWidth() {
throwISEIfImageIsInvalid(); throwISEIfImageIsInvalid();
if (mWidth == -1) { mWidth = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getWidth() :
mWidth = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getWidth() : nativeGetWidth(mFormat);
nativeGetWidth(mFormat);
}
return mWidth; return mWidth;
} }
@Override @Override
public int getHeight() { public int getHeight() {
throwISEIfImageIsInvalid(); throwISEIfImageIsInvalid();
if (mHeight == -1) { mHeight = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getHeight() :
mHeight = (getFormat() == ImageFormat.JPEG) ? ImageReader.this.getHeight() : nativeGetHeight(mFormat);
nativeGetHeight(mFormat);
}
return mHeight; return mHeight;
} }
@@ -822,6 +822,7 @@ public class ImageReader implements AutoCloseable {
private synchronized native SurfacePlane nativeCreatePlane(int idx, int readerFormat); private synchronized native SurfacePlane nativeCreatePlane(int idx, int readerFormat);
private synchronized native int nativeGetWidth(int format); private synchronized native int nativeGetWidth(int format);
private synchronized native int nativeGetHeight(int format); private synchronized native int nativeGetHeight(int format);
private synchronized native int nativeGetFormat(int readerFormat);
} }
private synchronized native void nativeInit(Object weakSelf, int w, int h, private synchronized native void nativeInit(Object weakSelf, int w, int h,

View File

@@ -1222,6 +1222,19 @@ static jint Image_getHeight(JNIEnv* env, jobject thiz, jint format)
} }
} }
static jint Image_getFormat(JNIEnv* env, jobject thiz, jint readerFormat)
{
if (isFormatOpaque(readerFormat)) {
// Assuming opaque reader produce opaque images.
return static_cast<jint>(PublicFormat::PRIVATE);
} else {
CpuConsumer::LockedBuffer* buffer = Image_getLockedBuffer(env, thiz);
PublicFormat publicFmt = android_view_Surface_mapHalFormatDataspaceToPublicFormat(
buffer->flexFormat, buffer->dataSpace);
return static_cast<jint>(publicFmt);
}
}
} // extern "C" } // extern "C"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -1240,8 +1253,9 @@ static JNINativeMethod gImageMethods[] = {
{"nativeImageGetBuffer", "(II)Ljava/nio/ByteBuffer;", (void*)Image_getByteBuffer }, {"nativeImageGetBuffer", "(II)Ljava/nio/ByteBuffer;", (void*)Image_getByteBuffer },
{"nativeCreatePlane", "(II)Landroid/media/ImageReader$SurfaceImage$SurfacePlane;", {"nativeCreatePlane", "(II)Landroid/media/ImageReader$SurfaceImage$SurfacePlane;",
(void*)Image_createSurfacePlane }, (void*)Image_createSurfacePlane },
{"nativeGetWidth", "(I)I", (void*)Image_getWidth }, {"nativeGetWidth", "(I)I", (void*)Image_getWidth },
{"nativeGetHeight", "(I)I", (void*)Image_getHeight }, {"nativeGetHeight", "(I)I", (void*)Image_getHeight },
{"nativeGetFormat", "(I)I", (void*)Image_getFormat },
}; };
int register_android_media_ImageReader(JNIEnv *env) { int register_android_media_ImageReader(JNIEnv *env) {