From 016011fdf8d920545c7e2e24ec8930c6abd37787 Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko <andrey.pavlenko@itseez.com> Date: Thu, 27 Aug 2015 13:23:39 +0300 Subject: [PATCH] fixing start faulure on some devices; syncronization improvements --- .../samples/tutorial4/Camera2Renderer.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Camera2Renderer.java b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Camera2Renderer.java index a0040ad3b4..177fe0d35d 100644 --- a/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Camera2Renderer.java +++ b/samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Camera2Renderer.java @@ -73,7 +73,6 @@ import android.view.Surface; Math.abs(aspect - (float)w/h) < 0.2 ) { bestWidth = w; bestHeight = h; - //mPreviewSize = psize; } } Log.i(LOGTAG, "best size: "+bestWidth+"x"+bestHeight); @@ -156,9 +155,9 @@ import android.view.Surface; @Override public void onDisconnected(CameraDevice cameraDevice) { - //mCameraOpenCloseLock.release(); cameraDevice.close(); mCameraDevice = null; + mCameraOpenCloseLock.release(); } @Override @@ -185,6 +184,7 @@ import android.view.Surface; return; } if(null == mSTex) { + mCameraOpenCloseLock.release(); Log.e(LOGTAG, "createCameraPreviewSession: preview SurfaceTexture is null"); return; } @@ -192,7 +192,6 @@ import android.view.Surface; mSTex.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); Surface surface = new Surface(mSTex); - Log.d(LOGTAG, "createCameraPreviewSession: surface = " + surface); mPreviewRequestBuilder = mCameraDevice .createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); @@ -215,6 +214,7 @@ import android.view.Surface; mCaptureSession.setRepeatingRequest( mPreviewRequestBuilder.build(), null, mBackgroundHandler); + Log.i(LOGTAG, "CameraPreviewSession has been started"); } catch (CameraAccessException e) { Log.e(LOGTAG, "createCaptureSession failed"); } @@ -227,7 +227,7 @@ import android.view.Surface; Log.e(LOGTAG, "createCameraPreviewSession failed"); mCameraOpenCloseLock.release(); } - }, null); + }, mBackgroundHandler); } catch (CameraAccessException e) { Log.e(LOGTAG, "createCameraPreviewSession"); } catch (InterruptedException e) { @@ -235,7 +235,7 @@ import android.view.Surface; "Interrupted while createCameraPreviewSession", e); } finally { - mCameraOpenCloseLock.release(); + //mCameraOpenCloseLock.release(); } } @@ -262,12 +262,15 @@ import android.view.Surface; @Override protected void setCameraPreviewSize(int width, int height) { - //mPreviewSize = new Size(width, height); - if( !cacPreviewSize(width, height) ) - return; + Log.i(LOGTAG, "setCameraPreviewSize("+width+"x"+height+")"); try { mCameraOpenCloseLock.acquire(); + if( !cacPreviewSize(width, height) ) { + mCameraOpenCloseLock.release(); + return; + } if (null != mCaptureSession) { + Log.d(LOGTAG, "closing existing previewSession"); mCaptureSession.close(); mCaptureSession = null; }