Search in sources :

Example 11 with MutableFrameFormat

use of android.filterfw.core.MutableFrameFormat in project platform_frameworks_base by android.

the class SurfaceTargetFilter method prepare.

@Override
public void prepare(FilterContext context) {
    mGlEnv = context.getGLEnvironment();
    // Create identity shader to render, and make sure to render upside-down, as textures
    // are stored internally bottom-to-top.
    mProgram = ShaderProgram.createIdentity(context);
    mProgram.setSourceRect(0, 1, 1, -1);
    mProgram.setClearsOutput(true);
    mProgram.setClearColor(0.0f, 0.0f, 0.0f);
    MutableFrameFormat screenFormat = ImageFormat.create(mScreenWidth, mScreenHeight, ImageFormat.COLORSPACE_RGBA, FrameFormat.TARGET_GPU);
    mScreen = (GLFrame) context.getFrameManager().newBoundFrame(screenFormat, GLFrame.EXISTING_FBO_BINDING, 0);
    // Set up cropping
    updateRenderMode();
}
Also used : MutableFrameFormat(android.filterfw.core.MutableFrameFormat)

Example 12 with MutableFrameFormat

use of android.filterfw.core.MutableFrameFormat in project platform_frameworks_base by android.

the class ImageSlicer method process.

@Override
public void process(FilterContext context) {
    // Get input frame
    if (mSliceIndex == 0) {
        mOriginalFrame = pullInput("image");
        calcOutputFormatForInput(mOriginalFrame);
    }
    FrameFormat inputFormat = mOriginalFrame.getFormat();
    MutableFrameFormat outputFormat = inputFormat.mutableCopy();
    outputFormat.setDimensions(mOutputWidth, mOutputHeight);
    // Create output frame
    Frame output = context.getFrameManager().newFrame(outputFormat);
    // Create the program if not created already
    if (mProgram == null) {
        mProgram = ShaderProgram.createIdentity(context);
    }
    // Calculate the four corner of the source region
    int xSliceIndex = mSliceIndex % mXSlices;
    int ySliceIndex = mSliceIndex / mXSlices;
    // TODO(rslin) : not sure shifting by 0.5 is needed.
    float x0 = (xSliceIndex * mSliceWidth - mPadSize) / ((float) mInputWidth);
    float y0 = (ySliceIndex * mSliceHeight - mPadSize) / ((float) mInputHeight);
    ((ShaderProgram) mProgram).setSourceRect(x0, y0, ((float) mOutputWidth) / mInputWidth, ((float) mOutputHeight) / mInputHeight);
    // Process
    mProgram.process(mOriginalFrame, output);
    mSliceIndex++;
    if (mSliceIndex == mXSlices * mYSlices) {
        mSliceIndex = 0;
        mOriginalFrame.release();
        setWaitsOnInputPort("image", true);
    } else {
        // Retain the original frame so it can be used next time.
        mOriginalFrame.retain();
        setWaitsOnInputPort("image", false);
    }
    // Push output
    pushOutput("image", output);
    // Release pushed frame
    output.release();
}
Also used : FrameFormat(android.filterfw.core.FrameFormat) MutableFrameFormat(android.filterfw.core.MutableFrameFormat) Frame(android.filterfw.core.Frame) ShaderProgram(android.filterfw.core.ShaderProgram) MutableFrameFormat(android.filterfw.core.MutableFrameFormat)

Example 13 with MutableFrameFormat

use of android.filterfw.core.MutableFrameFormat in project platform_frameworks_base by android.

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 14 with MutableFrameFormat

use of android.filterfw.core.MutableFrameFormat in project platform_frameworks_base by android.

the class ToRGBAFilter method setupPorts.

@Override
public void setupPorts() {
    MutableFrameFormat mask = new MutableFrameFormat(FrameFormat.TYPE_BYTE, FrameFormat.TARGET_NATIVE);
    mask.setDimensionCount(2);
    addMaskedInputPort("image", mask);
    addOutputBasedOnInput("image", "image");
}
Also used : MutableFrameFormat(android.filterfw.core.MutableFrameFormat)

Example 15 with MutableFrameFormat

use of android.filterfw.core.MutableFrameFormat in project platform_frameworks_base by android.

the class ToRGBFilter method setupPorts.

@Override
public void setupPorts() {
    MutableFrameFormat mask = new MutableFrameFormat(FrameFormat.TYPE_BYTE, FrameFormat.TARGET_NATIVE);
    mask.setDimensionCount(2);
    addMaskedInputPort("image", mask);
    addOutputBasedOnInput("image", "image");
}
Also used : MutableFrameFormat(android.filterfw.core.MutableFrameFormat)

Aggregations

MutableFrameFormat (android.filterfw.core.MutableFrameFormat)126 Frame (android.filterfw.core.Frame)36 FrameFormat (android.filterfw.core.FrameFormat)24 ShaderProgram (android.filterfw.core.ShaderProgram)12 Point (android.filterfw.geometry.Point)12 Quad (android.filterfw.geometry.Quad)12 GLFrame (android.filterfw.core.GLFrame)6 KeyValueMap (android.filterfw.core.KeyValueMap)6 MediaRecorder (android.media.MediaRecorder)6 IOException (java.io.IOException)6 NativeFrame (android.filterfw.core.NativeFrame)2