Merge pull request #834 from thegobot/patch-3

May be a buffer overflow in enableEncoding()
camera2
Leo Ma 4 years ago committed by GitHub
commit 7f6312a034
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -117,6 +117,17 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
@Override @Override
public void onDrawFrame(GL10 gl) { public void onDrawFrame(GL10 gl) {
if(mSurfaceWidth != mPreviewWidth || mSurfaceHeight != mPreviewHeight){
//May be a buffer overflow in enableEncoding()
//mPreviewWidth changed but onSurfaceCreated fired after enable encoding (mIsEncoding == true)
//could be calling magicFilter.onInputSizeChanged(width, height) in setPreviewResolution() after changing mGLPreviewBuffer?
//or start the encoder only after onSurfaceCreated ...
Log.e(TAG, String.format("Surface dimensions differ from Preview. May be a buffer overflow. Surface: %dx%d, Preview: %dx%d ", mSurfaceWidth, mSurfaceHeight, mPreviewWidth, mPreviewHeight));
return;
}
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
@ -127,8 +138,8 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
magicFilter.setTextureTransformMatrix(mTransformMatrix); magicFilter.setTextureTransformMatrix(mTransformMatrix);
magicFilter.onDrawFrame(mOESTextureId); magicFilter.onDrawFrame(mOESTextureId);
if (mIsEncoding) { if (mIsEncoding) {
mGLIntBufferCache.add(magicFilter.getGLFboBuffer()); mGLIntBufferCache.add(magicFilter.getGLFboBuffer());
synchronized (writeLock) { synchronized (writeLock) {
writeLock.notifyAll(); writeLock.notifyAll();
} }

Loading…
Cancel
Save