diff options
author | Igor Murashkin <iam@google.com> | 2013-08-29 18:03:29 -0700 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2013-09-18 17:00:30 -0700 |
commit | d5a1394a36b958e81c20f8be8e2f1f72626d82da (patch) | |
tree | 5a78086cdfcad758b0ceda24ecc66c759c96fd0e | |
parent | 83f2bb08a2180ab5eebdde07aef1db4fbe30afeb (diff) | |
download | pdk-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.java | 28 | ||||
-rw-r--r-- | apps/TestingCamera2/src/com/android/testingcamera2/CameraOps.java | 27 |
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 = |