use of android.filterfw.core.GLEnvironment in project android_frameworks_base by ParanoidAndroid.
the class MffEnvironment method createGLEnvironment.
/**
* Create and activate a new GL environment for use in this filter context.
*/
public void createGLEnvironment() {
GLEnvironment glEnvironment = new GLEnvironment();
glEnvironment.initWithNewContext();
setGLEnvironment(glEnvironment);
}
use of android.filterfw.core.GLEnvironment in project platform_frameworks_base by android.
the class EffectContext method initInCurrentGlContext.
private void initInCurrentGlContext() {
if (!GLEnvironment.isAnyContextActive()) {
throw new RuntimeException("Attempting to initialize EffectContext with no active " + "GL context!");
}
GLEnvironment glEnvironment = new GLEnvironment();
glEnvironment.initWithCurrentContext();
mFilterContext.initGLEnvironment(glEnvironment);
}
use of android.filterfw.core.GLEnvironment in project platform_frameworks_base by android.
the class MediaEncoderFilter method stopRecording.
private void stopRecording(FilterContext context) {
if (mLogVerbose)
Log.v(TAG, "Stopping recording");
mRecordingActive = false;
mNumFramesEncoded = 0;
GLEnvironment glEnv = context.getGLEnvironment();
// be called before calling Stop on the mediarecorder
if (mLogVerbose)
Log.v(TAG, String.format("Unregistering surface %d", mSurfaceId));
glEnv.unregisterSurfaceId(mSurfaceId);
try {
mMediaRecorder.stop();
} catch (RuntimeException e) {
throw new MediaRecorderStopException("MediaRecorder.stop() failed!", e);
}
mMediaRecorder.release();
mMediaRecorder = null;
mScreen.release();
mScreen = null;
// to be done to finalize media.
if (mRecordingDoneListener != null) {
mRecordingDoneListener.onRecordingDone();
}
}
use of android.filterfw.core.GLEnvironment in project platform_frameworks_base by android.
the class SurfaceRenderFilter method process.
@Override
public void process(FilterContext context) {
// Make sure we are bound to a surface before rendering
if (!mIsBound) {
Log.w("SurfaceRenderFilter", this + ": Ignoring frame as there is no surface to render to!");
return;
}
if (mLogVerbose)
Log.v(TAG, "Starting frame processing");
GLEnvironment glEnv = mSurfaceView.getGLEnv();
if (glEnv != context.getGLEnvironment()) {
throw new RuntimeException("Surface created under different GLEnvironment!");
}
// Get input frame
Frame input = pullInput("frame");
boolean createdFrame = false;
float currentAspectRatio = (float) input.getFormat().getWidth() / input.getFormat().getHeight();
if (currentAspectRatio != mAspectRatio) {
if (mLogVerbose)
Log.v(TAG, "New aspect ratio: " + currentAspectRatio + ", previously: " + mAspectRatio);
mAspectRatio = currentAspectRatio;
updateTargetRect();
}
// See if we need to copy to GPU
Frame gpuFrame = null;
if (mLogVerbose)
Log.v("SurfaceRenderFilter", "Got input format: " + input.getFormat());
int target = input.getFormat().getTarget();
if (target != FrameFormat.TARGET_GPU) {
gpuFrame = context.getFrameManager().duplicateFrameToTarget(input, FrameFormat.TARGET_GPU);
createdFrame = true;
} else {
gpuFrame = input;
}
// Activate our surface
glEnv.activateSurfaceWithId(mSurfaceView.getSurfaceId());
// Process
mProgram.process(gpuFrame, mScreen);
// And swap buffers
glEnv.swapBuffers();
if (createdFrame) {
gpuFrame.release();
}
}
use of android.filterfw.core.GLEnvironment in project android_frameworks_base by AOSPA.
the class SurfaceRenderFilter method process.
@Override
public void process(FilterContext context) {
// Make sure we are bound to a surface before rendering
if (!mIsBound) {
Log.w("SurfaceRenderFilter", this + ": Ignoring frame as there is no surface to render to!");
return;
}
if (mLogVerbose)
Log.v(TAG, "Starting frame processing");
GLEnvironment glEnv = mSurfaceView.getGLEnv();
if (glEnv != context.getGLEnvironment()) {
throw new RuntimeException("Surface created under different GLEnvironment!");
}
// Get input frame
Frame input = pullInput("frame");
boolean createdFrame = false;
float currentAspectRatio = (float) input.getFormat().getWidth() / input.getFormat().getHeight();
if (currentAspectRatio != mAspectRatio) {
if (mLogVerbose)
Log.v(TAG, "New aspect ratio: " + currentAspectRatio + ", previously: " + mAspectRatio);
mAspectRatio = currentAspectRatio;
updateTargetRect();
}
// See if we need to copy to GPU
Frame gpuFrame = null;
if (mLogVerbose)
Log.v("SurfaceRenderFilter", "Got input format: " + input.getFormat());
int target = input.getFormat().getTarget();
if (target != FrameFormat.TARGET_GPU) {
gpuFrame = context.getFrameManager().duplicateFrameToTarget(input, FrameFormat.TARGET_GPU);
createdFrame = true;
} else {
gpuFrame = input;
}
// Activate our surface
glEnv.activateSurfaceWithId(mSurfaceView.getSurfaceId());
// Process
mProgram.process(gpuFrame, mScreen);
// And swap buffers
glEnv.swapBuffers();
if (createdFrame) {
gpuFrame.release();
}
}
Aggregations