use of android.filterfw.core.FrameFormat in project platform_frameworks_base by android.
the class VignetteFilter method process.
@Override
public void process(FilterContext context) {
// Get input frame
Frame input = pullInput("image");
FrameFormat inputFormat = input.getFormat();
// Create program if not created already
if (mProgram == null || inputFormat.getTarget() != mTarget) {
initProgram(context, inputFormat.getTarget());
}
// Check if the frame size has changed
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
mWidth = inputFormat.getWidth();
mHeight = inputFormat.getHeight();
initParameters();
}
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Process
mProgram.process(input, output);
// Push output
pushOutput("image", output);
// Release pushed frame
output.release();
}
use of android.filterfw.core.FrameFormat in project platform_frameworks_base by android.
the class ThroughputFilter method process.
@Override
public void process(FilterContext context) {
// Pass through input frame
Frame input = pullInput("frame");
pushOutput("frame", input);
// Update stats
++mTotalFrameCount;
++mPeriodFrameCount;
// Check clock
if (mLastTime == 0) {
mLastTime = SystemClock.elapsedRealtime();
}
long curTime = SystemClock.elapsedRealtime();
// Output throughput info if time period is up
if ((curTime - mLastTime) >= (mPeriod * 1000)) {
FrameFormat inputFormat = input.getFormat();
int pixelCount = inputFormat.getWidth() * inputFormat.getHeight();
Throughput throughput = new Throughput(mTotalFrameCount, mPeriodFrameCount, mPeriod, pixelCount);
Frame throughputFrame = context.getFrameManager().newFrame(mOutputFormat);
throughputFrame.setObjectValue(throughput);
pushOutput("throughput", throughputFrame);
mLastTime = curTime;
mPeriodFrameCount = 0;
}
}
use of android.filterfw.core.FrameFormat in project platform_frameworks_base by android.
the class AutoFixFilter method createHistogramFrame.
private void createHistogramFrame(FilterContext context, int width, int height, int[] data) {
int histDims = 255 * 3 + 1;
int[] histArray = new int[histDims];
float border_thickness_ratio = 0.05f;
int y_border_thickness = (int) (height * border_thickness_ratio);
int x_border_thickness = (int) (width * border_thickness_ratio);
int pixels = (width - 2 * x_border_thickness) * (height - 2 * y_border_thickness);
float count = 0f;
for (int y = y_border_thickness; y < height - y_border_thickness; ++y) {
for (int x = x_border_thickness; x < width - x_border_thickness; ++x) {
int index = y * width + x;
int energy = (data[index] & 0xFF) + ((data[index] >> 8) & 0xFF) + ((data[index] >> 16) & 0xFF);
histArray[energy]++;
}
}
for (int i = 1; i < histDims; i++) {
histArray[i] += histArray[i - 1];
}
for (int i = 0; i < histDims; i++) {
long temp = (256 * 256 - 1l) * histArray[i] / pixels;
histArray[i] = (int) temp;
}
FrameFormat shaderHistFormat = ImageFormat.create(histDims, 1, ImageFormat.COLORSPACE_RGBA, FrameFormat.TARGET_GPU);
if (mHistFrame != null)
mHistFrame.release();
mHistFrame = context.getFrameManager().newFrame(shaderHistFormat);
mHistFrame.setInts(histArray);
}
use of android.filterfw.core.FrameFormat in project platform_frameworks_base by android.
the class DocumentaryFilter method process.
@Override
public void process(FilterContext context) {
// Get input frame
Frame input = pullInput("image");
FrameFormat inputFormat = input.getFormat();
// Create program if not created already
if (mProgram == null || inputFormat.getTarget() != mTarget) {
initProgram(context, inputFormat.getTarget());
}
// Check if the frame size has changed
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
mWidth = inputFormat.getWidth();
mHeight = inputFormat.getHeight();
initParameters();
}
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Process
mProgram.process(input, output);
// Push output
pushOutput("image", output);
// Release pushed frame
output.release();
}
use of android.filterfw.core.FrameFormat in project platform_frameworks_base by android.
the class DuotoneFilter method process.
@Override
public void process(FilterContext context) {
// Get input frame
Frame input = pullInput("image");
FrameFormat inputFormat = input.getFormat();
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Create program if not created already
if (mProgram == null || inputFormat.getTarget() != mTarget) {
initProgram(context, inputFormat.getTarget());
}
updateParameters();
// Process
mProgram.process(input, output);
// Push output
pushOutput("image", output);
// Release pushed frame
output.release();
}
Aggregations