fixing start faulure on some devices; syncronization improvements

This commit is contained in:
Andrey Pavlenko
2015-08-27 13:23:39 +03:00
parent 4b0f3bf188
commit 016011fdf8

View File

@@ -73,7 +73,6 @@ import android.view.Surface;
Math.abs(aspect - (float)w/h) < 0.2 ) { Math.abs(aspect - (float)w/h) < 0.2 ) {
bestWidth = w; bestWidth = w;
bestHeight = h; bestHeight = h;
//mPreviewSize = psize;
} }
} }
Log.i(LOGTAG, "best size: "+bestWidth+"x"+bestHeight); Log.i(LOGTAG, "best size: "+bestWidth+"x"+bestHeight);
@@ -156,9 +155,9 @@ import android.view.Surface;
@Override @Override
public void onDisconnected(CameraDevice cameraDevice) { public void onDisconnected(CameraDevice cameraDevice) {
//mCameraOpenCloseLock.release();
cameraDevice.close(); cameraDevice.close();
mCameraDevice = null; mCameraDevice = null;
mCameraOpenCloseLock.release();
} }
@Override @Override
@@ -185,6 +184,7 @@ import android.view.Surface;
return; return;
} }
if(null == mSTex) { if(null == mSTex) {
mCameraOpenCloseLock.release();
Log.e(LOGTAG, "createCameraPreviewSession: preview SurfaceTexture is null"); Log.e(LOGTAG, "createCameraPreviewSession: preview SurfaceTexture is null");
return; return;
} }
@@ -192,7 +192,6 @@ import android.view.Surface;
mSTex.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); mSTex.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Surface surface = new Surface(mSTex); Surface surface = new Surface(mSTex);
Log.d(LOGTAG, "createCameraPreviewSession: surface = " + surface);
mPreviewRequestBuilder = mCameraDevice mPreviewRequestBuilder = mCameraDevice
.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); .createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
@@ -215,6 +214,7 @@ import android.view.Surface;
mCaptureSession.setRepeatingRequest( mCaptureSession.setRepeatingRequest(
mPreviewRequestBuilder.build(), null, mPreviewRequestBuilder.build(), null,
mBackgroundHandler); mBackgroundHandler);
Log.i(LOGTAG, "CameraPreviewSession has been started");
} catch (CameraAccessException e) { } catch (CameraAccessException e) {
Log.e(LOGTAG, "createCaptureSession failed"); Log.e(LOGTAG, "createCaptureSession failed");
} }
@@ -227,7 +227,7 @@ import android.view.Surface;
Log.e(LOGTAG, "createCameraPreviewSession failed"); Log.e(LOGTAG, "createCameraPreviewSession failed");
mCameraOpenCloseLock.release(); mCameraOpenCloseLock.release();
} }
}, null); }, mBackgroundHandler);
} catch (CameraAccessException e) { } catch (CameraAccessException e) {
Log.e(LOGTAG, "createCameraPreviewSession"); Log.e(LOGTAG, "createCameraPreviewSession");
} catch (InterruptedException e) { } catch (InterruptedException e) {
@@ -235,7 +235,7 @@ import android.view.Surface;
"Interrupted while createCameraPreviewSession", e); "Interrupted while createCameraPreviewSession", e);
} }
finally { finally {
mCameraOpenCloseLock.release(); //mCameraOpenCloseLock.release();
} }
} }
@@ -262,12 +262,15 @@ import android.view.Surface;
@Override @Override
protected void setCameraPreviewSize(int width, int height) { protected void setCameraPreviewSize(int width, int height) {
//mPreviewSize = new Size(width, height); Log.i(LOGTAG, "setCameraPreviewSize("+width+"x"+height+")");
if( !cacPreviewSize(width, height) )
return;
try { try {
mCameraOpenCloseLock.acquire(); mCameraOpenCloseLock.acquire();
if( !cacPreviewSize(width, height) ) {
mCameraOpenCloseLock.release();
return;
}
if (null != mCaptureSession) { if (null != mCaptureSession) {
Log.d(LOGTAG, "closing existing previewSession");
mCaptureSession.close(); mCaptureSession.close();
mCaptureSession = null; mCaptureSession = null;
} }