Skip to content

Commit 1dbe5da

Browse files
committed
create SurfaceTexture while initializing capture class
Signed-off-by: Umair Khan <[email protected]>
1 parent 2701df5 commit 1dbe5da

File tree

1 file changed

+20
-27
lines changed

1 file changed

+20
-27
lines changed

src/in/omerjerk/processing/video/android/Capture.java

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import android.os.Handler;
1313
import android.os.Message;
1414
import android.util.Log;
15-
import android.view.SurfaceHolder;
1615
import processing.core.PConstants;
1716
import processing.core.PApplet;
1817
import processing.core.PImage;
@@ -22,7 +21,7 @@
2221

2322
@SuppressWarnings("deprecation")
2423
public class Capture extends PImage implements PConstants,
25-
SurfaceHolder.Callback, CameraHandlerCallback, SurfaceTexture.OnFrameAvailableListener {
24+
CameraHandlerCallback, SurfaceTexture.OnFrameAvailableListener {
2625

2726
private static final boolean DEBUG = true;
2827

@@ -72,14 +71,20 @@ public Capture(final PApplet applet, int width, int height) {
7271
height = 1280;
7372
}
7473
init(width, height, ARGB);
75-
74+
7675
applet.registerMethod("pause", this);
7776
applet.registerMethod("resume", this);
7877
glView = (GLSurfaceView) applet.getSurfaceView();
7978
pg = (PGraphicsOpenGL)applet.g;
8079
// customTexture = new Texture(pg, width, height);
8180
// customTexture.invertedY(true);
82-
log("cusotm texture address = " + customTexture.get(0));
81+
glView.queueEvent(new Runnable() {
82+
@Override
83+
public void run() {
84+
createSurfaceTexture();
85+
prepareFrameBuffers();
86+
}
87+
});
8388
// pg.setCache(this, customTexture);
8489
applet.runOnUiThread(new Runnable() {
8590
@Override
@@ -133,11 +138,7 @@ public void resume() {
133138
glView.queueEvent(new Runnable() {
134139
@Override
135140
public void run() {
136-
mFullScreen = new FullFrameRect(
137-
new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
138-
mTextureId = mFullScreen.createTextureObject();
139-
mSurfaceTexture = new SurfaceTexture(mTextureId);
140-
mSurfaceTexture.setOnFrameAvailableListener(Capture.this);
141+
createSurfaceTexture();
141142
prepareFrameBuffers();
142143

143144
//If camera is not null, the activity was started already and we're coming back from a pause.
@@ -153,23 +154,7 @@ public void run() {
153154
}
154155
});
155156
}
156-
157-
@Override
158-
public void surfaceCreated(SurfaceHolder holder) {
159-
log("surfaceCreated");
160-
}
161-
162-
@Override
163-
public void surfaceChanged(SurfaceHolder holder, int format, int width,
164-
int height) {
165-
log("surfaceChanged");
166-
}
167-
168-
@Override
169-
public void surfaceDestroyed(SurfaceHolder holder) {
170-
log("surface destroyed");
171-
}
172-
157+
173158
public static String[] list() {
174159
//The following check has to be commented to make list() method static
175160
// if (applet.getPackageManager().hasSystemFeature(
@@ -336,8 +321,16 @@ public void run() {
336321
}
337322
});
338323
}
324+
325+
private void createSurfaceTexture() {
326+
mFullScreen = new FullFrameRect(
327+
new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
328+
mTextureId = mFullScreen.createTextureObject();
329+
mSurfaceTexture = new SurfaceTexture(mTextureId);
330+
mSurfaceTexture.setOnFrameAvailableListener(Capture.this);
331+
}
339332

340-
public void prepareFrameBuffers() {
333+
private void prepareFrameBuffers() {
341334

342335
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
343336

0 commit comments

Comments
 (0)