Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java

Issue 2637853004: Video capture Android: make ImageReader member to allow surviving GC cycles (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
diff --git a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
index 51bd9843fa10dae903478d153c30c22e52825c4f..3997af9fbb2899fdb3ba39937f0d68f7c94950f0 100644
--- a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
+++ b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera2.java
@@ -260,6 +260,7 @@ public class VideoCaptureCamera2 extends VideoCapture {
private CameraCaptureSession mPreviewSession;
private CaptureRequest mPreviewRequest;
private Handler mMainHandler;
+ private ImageReader mImageReader = null;
private Range<Integer> mAeFpsRange;
private CameraState mCameraState = CameraState.STOPPED;
@@ -301,13 +302,13 @@ public class VideoCaptureCamera2 extends VideoCapture {
// Create an ImageReader and plug a thread looper into it to have
// readback take place on its own thread.
- final ImageReader imageReader = ImageReader.newInstance(mCaptureFormat.getWidth(),
+ mImageReader = ImageReader.newInstance(mCaptureFormat.getWidth(),
mCaptureFormat.getHeight(), mCaptureFormat.getPixelFormat(), 2 /* maxImages */);
HandlerThread thread = new HandlerThread("CameraPreview");
thread.start();
final Handler backgroundHandler = new Handler(thread.getLooper());
final CrImageReaderListener imageReaderListener = new CrImageReaderListener();
- imageReader.setOnImageAvailableListener(imageReaderListener, backgroundHandler);
+ mImageReader.setOnImageAvailableListener(imageReaderListener, backgroundHandler);
// The Preview template specifically means "high frame rate is given
// priority over the highest-quality post-processing".
@@ -324,7 +325,7 @@ public class VideoCaptureCamera2 extends VideoCapture {
return false;
}
// Construct an ImageReader Surface and plug it into our CaptureRequest.Builder.
- previewRequestBuilder.addTarget(imageReader.getSurface());
+ previewRequestBuilder.addTarget(mImageReader.getSurface());
// A series of configuration options in the PreviewBuilder
previewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
@@ -338,7 +339,7 @@ public class VideoCaptureCamera2 extends VideoCapture {
List<Surface> surfaceList = new ArrayList<Surface>(1);
// TODO(mcasas): release this Surface when not needed, https://crbug.com/643884.
- surfaceList.add(imageReader.getSurface());
+ surfaceList.add(mImageReader.getSurface());
mPreviewRequest = previewRequestBuilder.build();
final CrPreviewSessionListener captureSessionListener =
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698