aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-08-29 18:03:29 -0700
committerThe Android Automerger <android-build@android.com>2013-09-18 17:00:30 -0700
commitd5a1394a36b958e81c20f8be8e2f1f72626d82da (patch)
tree5a78086cdfcad758b0ceda24ecc66c759c96fd0e
parent83f2bb08a2180ab5eebdde07aef1db4fbe30afeb (diff)
downloadpdk-d5a1394a36b958e81c20f8be8e2f1f72626d82da.tar.gz
CameraITS/TestingCamera2: Update ImageReader APIs
Bug: 10461757 Change-Id: Iafdfe8ba12b27298090c0ec83d6f434ecc9c783f
-rw-r--r--apps/CameraITS/service/src/com/android/camera2/its/ItsService.java28
-rw-r--r--apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java27
2 files changed, 37 insertions, 18 deletions
diff --git a/apps/CameraITS/service/src/com/android/camera2/its/ItsService.java b/apps/CameraITS/service/src/com/android/camera2/its/ItsService.java
index b3b7215..5bdca28 100644
--- a/apps/CameraITS/service/src/com/android/camera2/its/ItsService.java
+++ b/apps/CameraITS/service/src/com/android/camera2/its/ItsService.java
@@ -229,9 +229,17 @@ public class ItsService extends Service {
return new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
- Image i = reader.getNextImage();
- listener.onCaptureAvailable(i);
- i.close();
+ Image i = null;
+ try {
+ i = reader.acquireNextImage();
+ listener.onCaptureAvailable(i);
+ } catch(ImageReader.MaxImagesAcquiredException e) {
+ throw new IllegalStateException(e);
+ } finally {
+ if (i != null) {
+ i.close();
+ }
+ }
}
};
}
@@ -241,8 +249,12 @@ public class ItsService extends Service {
return new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
- Image i = reader.getNextImage();
- i.close();
+ try {
+ Image i = reader.acquireNextImage();
+ i.close();
+ } catch (ImageReader.MaxImagesAcquiredException e) {
+ // OK: don't need to drop it if we couldn't acquire it.
+ }
}
};
}
@@ -264,7 +276,7 @@ public class ItsService extends Service {
if (mCaptureReader != null) {
mCaptureReader.close();
}
- mCaptureReader = new ImageReader(width, height, format,
+ mCaptureReader = ImageReader.newInstance(width, height, format,
MAX_CONCURRENT_READER_BUFFERS);
}
}
@@ -295,7 +307,7 @@ public class ItsService extends Service {
// Add a listener that just recycles buffers; they aren't saved anywhere.
ImageReader.OnImageAvailableListener readerListener =
createAvailableListenerDropper(mCaptureListener);
- mCaptureReader.setImageAvailableListener(readerListener, mSaveHandler);
+ mCaptureReader.setOnImageAvailableListener(readerListener, mSaveHandler);
// Get the user-specified regions for AE, AWB, AF.
// Note that the user specifies normalized [x,y,w,h], which is converted below
@@ -458,7 +470,7 @@ public class ItsService extends Service {
ImageReader.OnImageAvailableListener readerListener =
createAvailableListener(mCaptureListener);
- mCaptureReader.setImageAvailableListener(readerListener, mSaveHandler);
+ mCaptureReader.setOnImageAvailableListener(readerListener, mSaveHandler);
// Plan for how many callbacks need to be received throughout the duration of this
// sequence of capture requests.
diff --git a/apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java b/apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java
index 957df57..76d35b9 100644
--- a/apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java
+++ b/apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java
@@ -46,10 +46,10 @@ public class CameraOps {
private static final String TAG = "CameraOps";
- private Thread mOpsThread;
+ private final Thread mOpsThread;
private Handler mOpsHandler;
- private CameraManager mCameraManager;
+ private final CameraManager mCameraManager;
private CameraDevice mCamera;
private ImageReader mCaptureReader;
@@ -238,7 +238,7 @@ public class CameraOps {
mCamera.stopRepeating();
mCamera.waitUntilIdle();
- List<Surface> outputSurfaces = new ArrayList(1);
+ List<Surface> outputSurfaces = new ArrayList<Surface>(/*capacity*/1);
outputSurfaces.add(mPreviewSurface);
mCamera.configureOutputs(outputSurfaces);
@@ -281,11 +281,11 @@ public class CameraOps {
if (mCaptureReader != null) {
mCaptureReader.close();
}
- mCaptureReader = new ImageReader(width, height,
+ mCaptureReader = ImageReader.newInstance(width, height,
ImageFormat.JPEG, MAX_CONCURRENT_JPEGS);
}
- List<Surface> outputSurfaces = new ArrayList(1);
+ List<Surface> outputSurfaces = new ArrayList<Surface>(/*capacity*/1);
outputSurfaces.add(mCaptureReader.getSurface());
mCamera.configureOutputs(outputSurfaces);
@@ -301,12 +301,20 @@ public class CameraOps {
new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
- Image i = reader.getNextImage();
- listener.onCaptureAvailable(i);
- i.close();
+ Image i = null;
+ try {
+ i = reader.acquireNextImage();
+ listener.onCaptureAvailable(i);
+ } catch (ImageReader.MaxImagesAcquiredException e) {
+ throw new IllegalStateException("Too many JPEGs in flight", e);
+ } finally {
+ if (i != null) {
+ i.close();
+ }
+ }
}
};
- mCaptureReader.setImageAvailableListener(readerListener, h);
+ mCaptureReader.setOnImageAvailableListener(readerListener, h);
mCamera.capture(captureBuilder.build(), l, mOpsHandler);
@@ -318,7 +326,6 @@ public class CameraOps {
public void startRecording(boolean useMediaCodec) throws ApiFailureException {
minimalOpenCamera();
Size recordingSize = getRecordingSize();
- CaptureRequest request;
try {
if (mRecordingRequestBuilder == null) {
mRecordingRequestBuilder =