1. 07 Oct, 2015 2 commits
  2. 19 Sep, 2015 1 commit
    • Andrey Pavlenko's avatar
      draft implementation of alternative CameraBridge via GLES · 8e088d38
      Andrey Pavlenko authored
      a simple sample will look like:
      
      ```java
      public class MainActivity extends Activity implements CameraGLSurfaceView.CameraTextureListener {
      
      	CameraGLSurfaceView mView;
      	ByteBuffer buf;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              requestWindowFeature(Window.FEATURE_NO_TITLE);
              getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                      WindowManager.LayoutParams.FLAG_FULLSCREEN);
              getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
              setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
      
              mView = new CameraGLSurfaceView(this, null);
              mView.setCameraTextureListener(this);
              setContentView(mView);
              buf = ByteBuffer.allocateDirect(1920*1080*4);
          }
      
          @Override
          protected void onPause() {
              mView.onPause();
              super.onPause();
          }
      
          @Override
          protected void onResume() {
              super.onResume();
              mView.onResume();
          }
      
      	@Override
      	public void onCameraViewStarted(int width, int height) {
      		// TODO Auto-generated method stub
      
      	}
      
      	@Override
      	public void onCameraViewStopped() {
      		// TODO Auto-generated method stub
      
      	}
      
      	@Override
      	public boolean onCameraFrame(int texIn, int texOut, int width, int height) {
      		Log.i("MAIN", "onCameraFrame");
      		int w=width, h=height;
      		/*
      		// option 1:
      		// just return 'false' to display texIn on screen
      		retutn false;
      		*/
      
      		/*
      		// option 2:
      		// fast copy texIn to texOut
      		GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
          	GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texOut);
      		GLES20.glCopyTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 0, 0, w, h, 0);
      		return true;
      		*/
      
      		// option 3:
      		// read, modify and write back pixels
      		GLES20.glReadPixels(0, 0, w, h, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);
      
      		buf.rewind();
      		// red line
      		for(int i=0; i<h; i++) {
      			buf.position(w*4*i+i*4);
      			buf.put((byte) -1);
      			buf.position(w*4*i+i*4+4);
      			buf.put((byte) -1);
      		}
      		buf.rewind();
      
      		GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
          	GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texOut);
      		GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, w, h, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);
      		return true;
      	}
      }
      ```
      8e088d38
  3. 14 Sep, 2015 4 commits
  4. 13 Sep, 2015 1 commit
  5. 12 Sep, 2015 1 commit
  6. 11 Sep, 2015 4 commits
  7. 10 Sep, 2015 6 commits
  8. 09 Sep, 2015 9 commits
  9. 08 Sep, 2015 4 commits
  10. 07 Sep, 2015 3 commits
  11. 05 Sep, 2015 1 commit
  12. 04 Sep, 2015 4 commits