Android: Allow YuvConverter to be reused
Similar to how GlDrawer and GlTextureFrameBuffer already works, this CL updates YuvConverter so that it can be reused after release() has been called. This makes it more convenient to use, it can be stored in a final variable, and the resources are lazily allocated on first usage. Bug: b/112386285 Change-Id: I437c4c3fd414bc8974df75728f33954b28418e3e Reviewed-on: https://webrtc-review.googlesource.com/93290 Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24248}
This commit is contained in:

committed by
Commit Bot

parent
5b26bc61b1
commit
7b87530fcc
@ -93,7 +93,6 @@ public class YuvConverter {
|
||||
private final ThreadUtils.ThreadChecker threadChecker = new ThreadUtils.ThreadChecker();
|
||||
private final GlTextureFrameBuffer i420TextureFrameBuffer =
|
||||
new GlTextureFrameBuffer(GLES20.GL_RGBA);
|
||||
private boolean released = false;
|
||||
private final ShaderCallbacks shaderCallbacks = new ShaderCallbacks();
|
||||
private final GlGenericDrawer drawer = new GlGenericDrawer(FRAGMENT_SHADER, shaderCallbacks);
|
||||
|
||||
@ -107,9 +106,6 @@ public class YuvConverter {
|
||||
/** Converts the texture buffer to I420. */
|
||||
public I420Buffer convert(TextureBuffer inputTextureBuffer) {
|
||||
threadChecker.checkIsOnValidThread();
|
||||
if (released) {
|
||||
throw new IllegalStateException("YuvConverter.convert called on released object");
|
||||
}
|
||||
// We draw into a buffer laid out like
|
||||
//
|
||||
// +---------+
|
||||
@ -213,8 +209,9 @@ public class YuvConverter {
|
||||
|
||||
public void release() {
|
||||
threadChecker.checkIsOnValidThread();
|
||||
released = true;
|
||||
drawer.release();
|
||||
i420TextureFrameBuffer.release();
|
||||
// Allow this class to be reused.
|
||||
threadChecker.detachThread();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user