|
|
@ -141,7 +141,9 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT |
|
|
|
@RendererThread |
|
|
|
@RendererThread |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onSurfaceCreated(GL10 gl, EGLConfig config) { |
|
|
|
public void onSurfaceCreated(GL10 gl, EGLConfig config) { |
|
|
|
if (mCurrentFilter == null) mCurrentFilter = new NoFilter(); |
|
|
|
if (mCurrentFilter == null) { |
|
|
|
|
|
|
|
mCurrentFilter = new NoFilter(); |
|
|
|
|
|
|
|
} |
|
|
|
mOutputViewport = new EglViewport(mCurrentFilter); |
|
|
|
mOutputViewport = new EglViewport(mCurrentFilter); |
|
|
|
mOutputTextureId = mOutputViewport.createTexture(); |
|
|
|
mOutputTextureId = mOutputViewport.createTexture(); |
|
|
|
mInputSurfaceTexture = new SurfaceTexture(mOutputTextureId); |
|
|
|
mInputSurfaceTexture = new SurfaceTexture(mOutputTextureId); |
|
|
@ -282,7 +284,7 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT |
|
|
|
public void run() { |
|
|
|
public void run() { |
|
|
|
mRendererFrameCallbacks.add(callback); |
|
|
|
mRendererFrameCallbacks.add(callback); |
|
|
|
if (mOutputTextureId != 0) callback.onRendererTextureCreated(mOutputTextureId); |
|
|
|
if (mOutputTextureId != 0) callback.onRendererTextureCreated(mOutputTextureId); |
|
|
|
callback.onFilterChanged(mCurrentFilter); |
|
|
|
callback.onRendererFilterChanged(mCurrentFilter); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
@ -325,11 +327,15 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void setFilter(@NonNull Filter filter) { |
|
|
|
public void setFilter(final @NonNull Filter filter) { |
|
|
|
|
|
|
|
mCurrentFilter = filter; |
|
|
|
if (hasSurface()) { |
|
|
|
if (hasSurface()) { |
|
|
|
filter.setSize(mOutputSurfaceWidth, mOutputSurfaceHeight); |
|
|
|
filter.setSize(mOutputSurfaceWidth, mOutputSurfaceHeight); |
|
|
|
} |
|
|
|
} |
|
|
|
mCurrentFilter = filter; |
|
|
|
|
|
|
|
|
|
|
|
getView().queueEvent(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
if (mOutputViewport != null) { |
|
|
|
if (mOutputViewport != null) { |
|
|
|
mOutputViewport.setFilter(filter); |
|
|
|
mOutputViewport.setFilter(filter); |
|
|
|
} |
|
|
|
} |
|
|
@ -337,8 +343,10 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT |
|
|
|
// Need to synchronize when iterating the Collections.synchronizedSet
|
|
|
|
// Need to synchronize when iterating the Collections.synchronizedSet
|
|
|
|
synchronized (mRendererFrameCallbacks) { |
|
|
|
synchronized (mRendererFrameCallbacks) { |
|
|
|
for (RendererFrameCallback callback : mRendererFrameCallbacks) { |
|
|
|
for (RendererFrameCallback callback : mRendererFrameCallbacks) { |
|
|
|
callback.onFilterChanged(filter); |
|
|
|
callback.onRendererFilterChanged(filter); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|