Skip to content

Commit 016011f

Browse files
author
Andrey Pavlenko
committed
fixing start faulure on some devices; syncronization improvements
1 parent 4b0f3bf commit 016011f

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

samples/android/tutorial-4-opencl/src/org/opencv/samples/tutorial4/Camera2Renderer.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ boolean cacPreviewSize(final int width, final int height) {
7373
Math.abs(aspect - (float)w/h) < 0.2 ) {
7474
bestWidth = w;
7575
bestHeight = h;
76-
//mPreviewSize = psize;
7776
}
7877
}
7978
Log.i(LOGTAG, "best size: "+bestWidth+"x"+bestHeight);
@@ -156,9 +155,9 @@ public void onOpened(CameraDevice cameraDevice) {
156155

157156
@Override
158157
public void onDisconnected(CameraDevice cameraDevice) {
159-
//mCameraOpenCloseLock.release();
160158
cameraDevice.close();
161159
mCameraDevice = null;
160+
mCameraOpenCloseLock.release();
162161
}
163162

164163
@Override
@@ -185,14 +184,14 @@ private void createCameraPreviewSession() {
185184
return;
186185
}
187186
if(null == mSTex) {
187+
mCameraOpenCloseLock.release();
188188
Log.e(LOGTAG, "createCameraPreviewSession: preview SurfaceTexture is null");
189189
return;
190190
}
191191
Log.d(LOGTAG, "starting preview "+mPreviewSize.getWidth()+"x"+mPreviewSize.getHeight());
192192
mSTex.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
193193

194194
Surface surface = new Surface(mSTex);
195-
Log.d(LOGTAG, "createCameraPreviewSession: surface = " + surface);
196195

197196
mPreviewRequestBuilder = mCameraDevice
198197
.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
@@ -215,6 +214,7 @@ public void onConfigured(
215214
mCaptureSession.setRepeatingRequest(
216215
mPreviewRequestBuilder.build(), null,
217216
mBackgroundHandler);
217+
Log.i(LOGTAG, "CameraPreviewSession has been started");
218218
} catch (CameraAccessException e) {
219219
Log.e(LOGTAG, "createCaptureSession failed");
220220
}
@@ -227,15 +227,15 @@ public void onConfigureFailed(
227227
Log.e(LOGTAG, "createCameraPreviewSession failed");
228228
mCameraOpenCloseLock.release();
229229
}
230-
}, null);
230+
}, mBackgroundHandler);
231231
} catch (CameraAccessException e) {
232232
Log.e(LOGTAG, "createCameraPreviewSession");
233233
} catch (InterruptedException e) {
234234
throw new RuntimeException(
235235
"Interrupted while createCameraPreviewSession", e);
236236
}
237237
finally {
238-
mCameraOpenCloseLock.release();
238+
//mCameraOpenCloseLock.release();
239239
}
240240
}
241241

@@ -262,12 +262,15 @@ private void stopBackgroundThread() {
262262

263263
@Override
264264
protected void setCameraPreviewSize(int width, int height) {
265-
//mPreviewSize = new Size(width, height);
266-
if( !cacPreviewSize(width, height) )
267-
return;
265+
Log.i(LOGTAG, "setCameraPreviewSize("+width+"x"+height+")");
268266
try {
269267
mCameraOpenCloseLock.acquire();
268+
if( !cacPreviewSize(width, height) ) {
269+
mCameraOpenCloseLock.release();
270+
return;
271+
}
270272
if (null != mCaptureSession) {
273+
Log.d(LOGTAG, "closing existing previewSession");
271274
mCaptureSession.close();
272275
mCaptureSession = null;
273276
}

0 commit comments

Comments
 (0)