Search in sources :

Example 76 with FrameFormat

use of android.filterfw.core.FrameFormat in project android_frameworks_base by DirtyUnicorns.

the class ToPackedGrayFilter method process.

@Override
public void process(FilterContext context) {
    Frame input = pullInput("image");
    FrameFormat inputFormat = input.getFormat();
    FrameFormat outputFormat = convertInputFormat(inputFormat);
    int ow = outputFormat.getWidth();
    int oh = outputFormat.getHeight();
    checkOutputDimensions(ow, oh);
    mProgram.setHostValue("pix_stride", 1.0f / ow);
    // Do the RGBA to luminance conversion.
    MutableFrameFormat tempFrameFormat = inputFormat.mutableCopy();
    tempFrameFormat.setDimensions(ow / 4, oh);
    Frame temp = context.getFrameManager().newFrame(tempFrameFormat);
    mProgram.process(input, temp);
    // Read frame from GPU to CPU.
    Frame output = context.getFrameManager().newFrame(outputFormat);
    output.setDataFromFrame(temp);
    temp.release();
    // Push output and yield ownership.
    pushOutput("image", output);
    output.release();
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) MutableFrameFormat(android.filterfw.core.MutableFrameFormat) Frame(android.filterfw.core.Frame) MutableFrameFormat(android.filterfw.core.MutableFrameFormat)

Example 77 with FrameFormat

use of android.filterfw.core.FrameFormat in project android_frameworks_base by DirtyUnicorns.

the class FixedRotationFilter method process.

@Override
public void process(FilterContext context) {
    Frame input = pullInput("image");
    if (mRotation == 0) {
        pushOutput("image", input);
        return;
    }
    FrameFormat inputFormat = input.getFormat();
    // Create program if not created already
    if (mProgram == null) {
        mProgram = ShaderProgram.createIdentity(context);
    }
    MutableFrameFormat outputFormat = inputFormat.mutableCopy();
    int width = inputFormat.getWidth();
    int height = inputFormat.getHeight();
    Point p1 = new Point(0.0f, 0.0f);
    Point p2 = new Point(1.0f, 0.0f);
    Point p3 = new Point(0.0f, 1.0f);
    Point p4 = new Point(1.0f, 1.0f);
    Quad sourceRegion;
    switch(((int) Math.round(mRotation / 90f)) % 4) {
        case 1:
            sourceRegion = new Quad(p3, p1, p4, p2);
            outputFormat.setDimensions(height, width);
            break;
        case 2:
            sourceRegion = new Quad(p4, p3, p2, p1);
            break;
        case 3:
            sourceRegion = new Quad(p2, p4, p1, p3);
            outputFormat.setDimensions(height, width);
            break;
        case 0:
        default:
            sourceRegion = new Quad(p1, p2, p3, p4);
            break;
    }
    // Create output frame
    Frame output = context.getFrameManager().newFrame(outputFormat);
    // Set the source region
    mProgram.setSourceRegion(sourceRegion);
    // Process
    mProgram.process(input, output);
    // Push output
    pushOutput("image", output);
    // Release pushed frame
    output.release();
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) MutableFrameFormat(android.filterfw.core.MutableFrameFormat) Quad(android.filterfw.geometry.Quad) Frame(android.filterfw.core.Frame) MutableFrameFormat(android.filterfw.core.MutableFrameFormat) Point(android.filterfw.geometry.Point) Point(android.filterfw.geometry.Point)

Example 78 with FrameFormat

use of android.filterfw.core.FrameFormat in project android_frameworks_base by DirtyUnicorns.

the class GrainFilter method process.

@Override
public void process(FilterContext context) {
    // Get input frame
    Frame input = pullInput("image");
    FrameFormat inputFormat = input.getFormat();
    FrameFormat noiseFormat = ImageFormat.create(inputFormat.getWidth() / 2, inputFormat.getHeight() / 2, ImageFormat.COLORSPACE_RGBA, FrameFormat.TARGET_GPU);
    // Create noise frame
    Frame noiseFrame = context.getFrameManager().newFrame(inputFormat);
    // Create output frame
    Frame output = context.getFrameManager().newFrame(inputFormat);
    // Create program if not created already
    if (mNoiseProgram == null || mGrainProgram == null || inputFormat.getTarget() != mTarget) {
        initProgram(context, inputFormat.getTarget());
        updateParameters();
    }
    // Check if the frame size has changed
    if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
        updateFrameSize(inputFormat.getWidth(), inputFormat.getHeight());
    }
    Frame[] empty = {};
    mNoiseProgram.process(empty, noiseFrame);
    // Process
    Frame[] inputs = { input, noiseFrame };
    mGrainProgram.process(inputs, output);
    // Push output
    pushOutput("image", output);
    // Release pushed frame
    output.release();
    noiseFrame.release();
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) Frame(android.filterfw.core.Frame)

Example 79 with FrameFormat

use of android.filterfw.core.FrameFormat in project android_frameworks_base by DirtyUnicorns.

the class BitmapOverlayFilter 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());
    }
    if (mBitmap != null) {
        Frame frame = createBitmapFrame(context);
        // Process
        Frame[] inputs = { input, frame };
        mProgram.process(inputs, output);
        frame.release();
    } else {
        output.setDataFromFrame(input);
    }
    // Push output
    pushOutput("image", output);
    // Release pushed frame
    output.release();
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) Frame(android.filterfw.core.Frame)

Example 80 with FrameFormat

use of android.filterfw.core.FrameFormat in project android_frameworks_base by DirtyUnicorns.

the class BitmapOverlayFilter method createBitmapFrame.

private Frame createBitmapFrame(FilterContext context) {
    FrameFormat format = ImageFormat.create(mBitmap.getWidth(), mBitmap.getHeight(), ImageFormat.COLORSPACE_RGBA, FrameFormat.TARGET_GPU);
    Frame frame = context.getFrameManager().newFrame(format);
    frame.setBitmap(mBitmap);
    mBitmap.recycle();
    mBitmap = null;
    return frame;
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) Frame(android.filterfw.core.Frame)

Aggregations

FrameFormat (android.filterfw.core.FrameFormat)270 Frame (android.filterfw.core.Frame)198 MutableFrameFormat (android.filterfw.core.MutableFrameFormat)39 NativeFrame (android.filterfw.core.NativeFrame)25 GLFrame (android.filterfw.core.GLFrame)18 ShaderProgram (android.filterfw.core.ShaderProgram)12 Quad (android.filterfw.geometry.Quad)12 FrameManager (android.filterfw.core.FrameManager)6 Point (android.filterfw.geometry.Point)6 Bitmap (android.graphics.Bitmap)6 Paint (android.graphics.Paint)6 CachedFrameManager (android.filterfw.core.CachedFrameManager)1