use of android.filterfw.core.ShaderProgram in project android_frameworks_base by AOSPA.
the class ToGrayFilter method getShaderProgram.
@Override
protected Program getShaderProgram(FilterContext context) {
int inputChannels = getInputFormat("image").getBytesPerSample();
if (inputChannels != 4) {
throw new RuntimeException("Unsupported GL input channels: " + inputChannels + "! Channels must be 4!");
}
ShaderProgram program = new ShaderProgram(context, mColorToGray4Shader);
program.setMaximumTileSize(mTileSize);
if (mInvertSource)
program.setSourceRect(0.0f, 1.0f, 1.0f, -1.0f);
return program;
}
use of android.filterfw.core.ShaderProgram in project android_frameworks_base by AOSPA.
the class SepiaFilter method initProgram.
public void initProgram(FilterContext context, int target) {
switch(target) {
case FrameFormat.TARGET_GPU:
ShaderProgram shaderProgram = new ShaderProgram(context, mSepiaShader);
shaderProgram.setMaximumTileSize(mTileSize);
mProgram = shaderProgram;
break;
default:
throw new RuntimeException("Filter Sharpen does not support frames of " + "target " + target + "!");
}
mTarget = target;
}
use of android.filterfw.core.ShaderProgram in project android_frameworks_base by AOSPA.
the class StraightenFilter method updateParameters.
private void updateParameters() {
float cosTheta = (float) Math.cos(mAngle * DEGREE_TO_RADIAN);
float sinTheta = (float) Math.sin(mAngle * DEGREE_TO_RADIAN);
if (mMaxAngle <= 0)
throw new RuntimeException("Max angle is out of range (0-180).");
mMaxAngle = (mMaxAngle > 90) ? 90 : mMaxAngle;
Point p0 = new Point(-cosTheta * mWidth + sinTheta * mHeight, -sinTheta * mWidth - cosTheta * mHeight);
Point p1 = new Point(cosTheta * mWidth + sinTheta * mHeight, sinTheta * mWidth - cosTheta * mHeight);
Point p2 = new Point(-cosTheta * mWidth - sinTheta * mHeight, -sinTheta * mWidth + cosTheta * mHeight);
Point p3 = new Point(cosTheta * mWidth - sinTheta * mHeight, sinTheta * mWidth + cosTheta * mHeight);
float maxWidth = (float) Math.max(Math.abs(p0.x), Math.abs(p1.x));
float maxHeight = (float) Math.max(Math.abs(p0.y), Math.abs(p1.y));
float scale = 0.5f * Math.min(mWidth / maxWidth, mHeight / maxHeight);
p0.set(scale * p0.x / mWidth + 0.5f, scale * p0.y / mHeight + 0.5f);
p1.set(scale * p1.x / mWidth + 0.5f, scale * p1.y / mHeight + 0.5f);
p2.set(scale * p2.x / mWidth + 0.5f, scale * p2.y / mHeight + 0.5f);
p3.set(scale * p3.x / mWidth + 0.5f, scale * p3.y / mHeight + 0.5f);
Quad quad = new Quad(p0, p1, p2, p3);
((ShaderProgram) mProgram).setSourceRegion(quad);
}
use of android.filterfw.core.ShaderProgram in project android_frameworks_base by AOSPA.
the class StraightenFilter method initProgram.
public void initProgram(FilterContext context, int target) {
switch(target) {
case FrameFormat.TARGET_GPU:
ShaderProgram shaderProgram = ShaderProgram.createIdentity(context);
shaderProgram.setMaximumTileSize(mTileSize);
mProgram = shaderProgram;
break;
default:
throw new RuntimeException("Filter Sharpen does not support frames of " + "target " + target + "!");
}
mTarget = target;
}
use of android.filterfw.core.ShaderProgram in project android_frameworks_base by AOSPA.
the class RedEyeFilter method initProgram.
public void initProgram(FilterContext context, int target) {
switch(target) {
case FrameFormat.TARGET_GPU:
ShaderProgram shaderProgram = new ShaderProgram(context, mRedEyeShader);
shaderProgram.setMaximumTileSize(mTileSize);
mProgram = shaderProgram;
mProgram.setHostValue("intensity", DEFAULT_RED_INTENSITY);
break;
default:
throw new RuntimeException("Filter RedEye does not support frames of " + "target " + target + "!");
}
mTarget = target;
}
Aggregations