media: Update ImageReader APIs
Bug: 10461757
Change-Id: Ia5a76a541c3df8b219bb47d7835cfcb198892df8
diff --git a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
index 54f076f..2242fa5 100644
--- a/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
+++ b/tests/tests/display/src/android/display/cts/VirtualDisplayTest.java
@@ -26,6 +26,7 @@
import android.hardware.display.VirtualDisplay;
import android.media.Image;
import android.media.ImageReader;
+import android.media.ImageReader.MaxImagesAcquiredException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -83,8 +84,8 @@
mImageReaderLock.lock();
try {
- mImageReader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
- mImageReader.setImageAvailableListener(mImageListener, mHandler);
+ mImageReader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBA_8888, 2);
+ mImageReader.setOnImageAvailableListener(mImageListener, mHandler);
mSurface = mImageReader.getSurface();
} finally {
mImageReaderLock.unlock();
@@ -315,19 +316,10 @@
}
Log.d(TAG, "New image available from virtual display.");
- Image image = reader.getNextImage();
+ // Get the latest buffer
+ Image image = reader.acquireLatestImage();
if (image != null) {
try {
- // Get the latest buffer.
- for (;;) {
- Image nextImage = reader.getNextImage();
- if (nextImage == null) {
- break;
- }
- reader.releaseImage(image);
- image = nextImage;
- }
-
// Scan for colors.
int color = scanImage(image);
synchronized (this) {
@@ -337,9 +329,12 @@
}
}
} finally {
- reader.releaseImage(image);
+ image.close();
}
}
+ } catch (MaxImagesAcquiredException e) {
+ // Impossible: Images are released immediately after use
+ throw new IllegalStateException(e);
} finally {
mImageReaderLock.unlock();
}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
index e04aea8..e29569b 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
@@ -26,6 +26,7 @@
import android.hardware.camera2.CaptureResult;
import android.media.Image;
import android.media.ImageReader;
+import android.media.ImageReader.MaxImagesAcquiredException;
import android.os.Handler;
import android.os.SystemClock;
import android.test.AndroidTestCase;
@@ -435,14 +436,19 @@
private class ImageDropperListener implements ImageReader.OnImageAvailableListener {
@Override
public void onImageAvailable(ImageReader reader) {
- Image image = reader.getNextImage();
- image.close();
+ try {
+ Image image = reader.acquireNextImage();
+ image.close();
+ } catch (MaxImagesAcquiredException e) {
+ // Impossible: We drop every frame we get.
+ throw new IllegalStateException(e);
+ }
}
}
private void createDefaultSurface() throws Exception {
mReader =
- new ImageReader(DEFAULT_CAPTURE_WIDTH,
+ ImageReader.newInstance(DEFAULT_CAPTURE_WIDTH,
DEFAULT_CAPTURE_HEIGHT,
ImageFormat.YUV_420_888,
MAX_NUM_IMAGES);
@@ -450,7 +456,7 @@
// Create dummy image listener since we don't care the image data in this test.
ImageReader.OnImageAvailableListener listener = new ImageDropperListener();
mDummyThread = new CameraTestThread();
- mReader.setImageAvailableListener(listener, mDummyThread.start());
+ mReader.setOnImageAvailableListener(listener, mDummyThread.start());
}
private void verifyCaptureResults(
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
index 3ba9815..a35703b 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
@@ -207,9 +207,9 @@
private void prepareImageReader(Size sz, int format) throws Exception {
int width = sz.getWidth();
int height = sz.getHeight();
- mReader = new ImageReader(width, height, format, MAX_NUM_IMAGES);
+ mReader = ImageReader.newInstance(width, height, format, MAX_NUM_IMAGES);
mListener = new SimpleImageListener();
- mReader.setImageAvailableListener(mListener, mHandler);
+ mReader.setOnImageAvailableListener(mListener, mHandler);
if (VERBOSE) Log.v(TAG, "Preparing ImageReader size " + sz.toString());
}
@@ -245,17 +245,17 @@
assertNotNull("Image listener is null", mListener);
if (VERBOSE) Log.v(TAG, "Waiting for an Image");
mListener.waitForImage();
- img = mReader.getNextImage();
+ img = mReader.acquireNextImage();
if (VERBOSE) Log.v(TAG, "Got next image");
validateImage(img, sz.getWidth(), sz.getHeight(), format);
- mReader.releaseImage(img);
+ img.close();
// Return the pending images to producer in case the validation is slower
// than the image producing rate. Otherwise, it could cause the producer
// starvation.
while (mListener.isImagePending()) {
mListener.waitForImage();
- img = mReader.getNextImage();
- mReader.releaseImage(img);
+ img = mReader.acquireNextImage();
+ img.close();
}
}
}
diff --git a/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
index f84079a..6ad0483 100644
--- a/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NoCaptureVideoPermissionTest.java
@@ -45,7 +45,7 @@
public void testCreatePublicVirtualDisplay() {
DisplayManager displayManager =
(DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
- ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+ ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
try {
displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC);
@@ -68,7 +68,7 @@
public void testCreateSecureVirtualDisplay() {
DisplayManager displayManager =
(DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
- ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+ ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
try {
displayManager.createVirtualDisplay(NAME, WIDTH, HEIGHT, DENSITY,
reader.getSurface(), DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE);
@@ -89,7 +89,7 @@
public void testCreatePrivateVirtualDisplay() {
DisplayManager displayManager =
(DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
- ImageReader reader = new ImageReader(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
+ ImageReader reader = ImageReader.newInstance(WIDTH, HEIGHT, PixelFormat.RGBX_8888, 1);
try {
VirtualDisplay display = displayManager.createVirtualDisplay(
NAME, WIDTH, HEIGHT, DENSITY,