Search in sources :

Example 1 with FullFrameRect

use of com.android.grafika.gles.FullFrameRect in project grafika by google.

the class TextureMovieEncoder method prepareEncoder.

private void prepareEncoder(EGLContext sharedContext, int width, int height, int bitRate, File outputFile) {
    try {
        mVideoEncoder = new VideoEncoderCore(width, height, bitRate, outputFile);
    } catch (IOException ioe) {
        throw new RuntimeException(ioe);
    }
    mEglCore = new EglCore(sharedContext, EglCore.FLAG_RECORDABLE);
    mInputWindowSurface = new WindowSurface(mEglCore, mVideoEncoder.getInputSurface(), true);
    mInputWindowSurface.makeCurrent();
    mFullScreen = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
}
Also used : FullFrameRect(com.android.grafika.gles.FullFrameRect) Texture2dProgram(com.android.grafika.gles.Texture2dProgram) EglCore(com.android.grafika.gles.EglCore) IOException(java.io.IOException) WindowSurface(com.android.grafika.gles.WindowSurface)

Example 2 with FullFrameRect

use of com.android.grafika.gles.FullFrameRect in project grafika by google.

the class CameraSurfaceRenderer method onSurfaceCreated.

@Override
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
    Log.d(TAG, "onSurfaceCreated");
    // We're starting up or coming back.  Either way we've got a new EGLContext that will
    // need to be shared with the video encoder, so figure out if a recording is already
    // in progress.
    mRecordingEnabled = mVideoEncoder.isRecording();
    if (mRecordingEnabled) {
        mRecordingStatus = RECORDING_RESUMED;
    } else {
        mRecordingStatus = RECORDING_OFF;
    }
    // Set up the texture blitter that will be used for on-screen display.  This
    // is *not* applied to the recording, because that uses a separate shader.
    mFullScreen = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
    mTextureId = mFullScreen.createTextureObject();
    // Create a SurfaceTexture, with an external texture, in this EGL context.  We don't
    // have a Looper in this thread -- GLSurfaceView doesn't create one -- so the frame
    // available messages will arrive on the main thread.
    mSurfaceTexture = new SurfaceTexture(mTextureId);
    // Tell the UI thread to enable the camera preview.
    mCameraHandler.sendMessage(mCameraHandler.obtainMessage(CameraCaptureActivity.CameraHandler.MSG_SET_SURFACE_TEXTURE, mSurfaceTexture));
}
Also used : SurfaceTexture(android.graphics.SurfaceTexture) FullFrameRect(com.android.grafika.gles.FullFrameRect) Texture2dProgram(com.android.grafika.gles.Texture2dProgram)

Example 3 with FullFrameRect

use of com.android.grafika.gles.FullFrameRect in project grafika by google.

the class TextureMovieEncoder method handleUpdateSharedContext.

/**
     * Tears down the EGL surface and context we've been using to feed the MediaCodec input
     * surface, and replaces it with a new one that shares with the new context.
     * <p>
     * This is useful if the old context we were sharing with went away (maybe a GLSurfaceView
     * that got torn down) and we need to hook up with the new one.
     */
private void handleUpdateSharedContext(EGLContext newSharedContext) {
    Log.d(TAG, "handleUpdatedSharedContext " + newSharedContext);
    // Release the EGLSurface and EGLContext.
    mInputWindowSurface.releaseEglSurface();
    mFullScreen.release(false);
    mEglCore.release();
    // Create a new EGLContext and recreate the window surface.
    mEglCore = new EglCore(newSharedContext, EglCore.FLAG_RECORDABLE);
    mInputWindowSurface.recreate(mEglCore);
    mInputWindowSurface.makeCurrent();
    // Create new programs and such for the new context.
    mFullScreen = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
}
Also used : FullFrameRect(com.android.grafika.gles.FullFrameRect) Texture2dProgram(com.android.grafika.gles.Texture2dProgram) EglCore(com.android.grafika.gles.EglCore)

Example 4 with FullFrameRect

use of com.android.grafika.gles.FullFrameRect in project grafika by google.

the class ContinuousCaptureActivity method surfaceCreated.

// SurfaceHolder.Callback
@Override
public void surfaceCreated(SurfaceHolder holder) {
    Log.d(TAG, "surfaceCreated holder=" + holder);
    // Set up everything that requires an EGL context.
    //
    // We had to wait until we had a surface because you can't make an EGL context current
    // without one, and creating a temporary 1x1 pbuffer is a waste of time.
    //
    // The display surface that we use for the SurfaceView, and the encoder surface we
    // use for video, use the same EGL context.
    mEglCore = new EglCore(null, EglCore.FLAG_RECORDABLE);
    mDisplaySurface = new WindowSurface(mEglCore, holder.getSurface(), false);
    mDisplaySurface.makeCurrent();
    mFullFrameBlit = new FullFrameRect(new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
    mTextureId = mFullFrameBlit.createTextureObject();
    mCameraTexture = new SurfaceTexture(mTextureId);
    mCameraTexture.setOnFrameAvailableListener(this);
    Log.d(TAG, "starting camera preview");
    try {
        mCamera.setPreviewTexture(mCameraTexture);
    } catch (IOException ioe) {
        throw new RuntimeException(ioe);
    }
    mCamera.startPreview();
    //       (can we guarantee that camera preview size is compatible with AVC video encoder?)
    try {
        mCircEncoder = new CircularEncoder(VIDEO_WIDTH, VIDEO_HEIGHT, 6000000, mCameraPreviewThousandFps / 1000, 7, mHandler);
    } catch (IOException ioe) {
        throw new RuntimeException(ioe);
    }
    mEncoderSurface = new WindowSurface(mEglCore, mCircEncoder.getInputSurface(), true);
    updateControls();
}
Also used : SurfaceTexture(android.graphics.SurfaceTexture) FullFrameRect(com.android.grafika.gles.FullFrameRect) Texture2dProgram(com.android.grafika.gles.Texture2dProgram) EglCore(com.android.grafika.gles.EglCore) IOException(java.io.IOException) WindowSurface(com.android.grafika.gles.WindowSurface)

Aggregations

FullFrameRect (com.android.grafika.gles.FullFrameRect)4 Texture2dProgram (com.android.grafika.gles.Texture2dProgram)4 EglCore (com.android.grafika.gles.EglCore)3 SurfaceTexture (android.graphics.SurfaceTexture)2 WindowSurface (com.android.grafika.gles.WindowSurface)2 IOException (java.io.IOException)2