Search in sources :

Example 26 with OutputPort

use of androidx.media.filterfw.OutputPort in project android_frameworks_base by ResurrectionRemix.

the class FloatArrayToStrFilter method onProcess.

/**
     * @see androidx.media.filterfw.Filter#onProcess()
     */
@Override
protected void onProcess() {
    FrameValue arrayFrame = getConnectedInputPort("array").pullFrame().asFrameValues();
    float[] array = (float[]) arrayFrame.getValue();
    String outstr = Arrays.toString(array);
    OutputPort outPort = getConnectedOutputPort("string");
    FrameValue stringFrame = outPort.fetchAvailableFrame(null).asFrameValue();
    stringFrame.setValue(outstr);
    outPort.pushFrame(stringFrame);
}
Also used : OutputPort(androidx.media.filterfw.OutputPort) FrameValue(androidx.media.filterfw.FrameValue)

Example 27 with OutputPort

use of androidx.media.filterfw.OutputPort in project android_frameworks_base by ResurrectionRemix.

the class IfElseFilter method onProcess.

@Override
protected void onProcess() {
    OutputPort outPort = getConnectedOutputPort("output");
    FrameImage2D trueFrame = getConnectedInputPort("trueResult").pullFrame().asFrameImage2D();
    FrameImage2D falseFrame = getConnectedInputPort("falseResult").pullFrame().asFrameImage2D();
    FrameValue boolFrameValue = getConnectedInputPort("condition").pullFrame().asFrameValue();
    boolean condition = (Boolean) boolFrameValue.getValue();
    FrameBuffer2D outputFrame;
    // If the condition is true, then we want to use the camera, else use the gallery
    if (condition) {
        outputFrame = trueFrame;
    } else {
        outputFrame = falseFrame;
    }
    outPort.pushFrame(outputFrame);
}
Also used : OutputPort(androidx.media.filterfw.OutputPort) FrameBuffer2D(androidx.media.filterfw.FrameBuffer2D) FrameImage2D(androidx.media.filterfw.FrameImage2D) FrameValue(androidx.media.filterfw.FrameValue)

Example 28 with OutputPort

use of androidx.media.filterfw.OutputPort in project android_frameworks_base by ResurrectionRemix.

the class ImageGoodnessFilter method onProcess.

/**
     * @see androidx.media.filterfw.Filter#onProcess()
     */
@Override
protected void onProcess() {
    FrameValue sharpnessFrameValue = getConnectedInputPort("sharpness").pullFrame().asFrameValue();
    float sharpness = ((Float) sharpnessFrameValue.getValue()).floatValue();
    FrameValue overExposureFrameValue = getConnectedInputPort("overExposure").pullFrame().asFrameValue();
    float overExposure = ((Float) overExposureFrameValue.getValue()).floatValue();
    FrameValue underExposureFrameValue = getConnectedInputPort("underExposure").pullFrame().asFrameValue();
    float underExposure = ((Float) underExposureFrameValue.getValue()).floatValue();
    FrameValue colorfulnessFrameValue = getConnectedInputPort("colorfulness").pullFrame().asFrameValue();
    float colorfulness = ((Float) colorfulnessFrameValue.getValue()).floatValue();
    FrameValue contrastRatingFrameValue = getConnectedInputPort("contrastRating").pullFrame().asFrameValue();
    float contrastRating = ((Float) contrastRatingFrameValue.getValue()).floatValue();
    FrameValue brightnessFrameValue = getConnectedInputPort("brightness").pullFrame().asFrameValue();
    float brightness = ((Float) brightnessFrameValue.getValue()).floatValue();
    FrameValue motionValuesFrameValue = getConnectedInputPort("motionValues").pullFrame().asFrameValue();
    float[] motionValues = (float[]) motionValuesFrameValue.getValue();
    float vectorAccel = (float) Math.sqrt(Math.pow(motionValues[0], 2) + Math.pow(motionValues[1], 2) + Math.pow(motionValues[2], 2));
    String outStr;
    FrameValue capturingFrameValue = getConnectedInputPort("capturing").pullFrame().asFrameValue();
    boolean capturing = (Boolean) capturingFrameValue.getValue();
    FrameImage2D inputImage = getConnectedInputPort("image").pullFrame().asFrameImage2D();
    // TODO: get rid of magic numbers
    float score = 0.0f;
    score = computePictureScore(vectorAccel, sharpness, underExposure, overExposure, contrastRating, colorfulness, brightness);
    if (scoreMean == 0)
        scoreMean = score;
    else
        scoreMean = scoreMean * (1 - DECAY) + score * DECAY;
    if (motionMean == 0)
        motionMean = vectorAccel;
    else
        motionMean = motionMean * (1 - DECAY) + vectorAccel * DECAY;
    float classifierScore = classifierComputeScore(vectorAccel, sharpness, underExposure, colorfulness, contrastRating, score);
    //        Log.v(TAG, "ClassifierScore:: " + classifierScore);
    final float GREAT_SCORE = 3.5f;
    final float GOOD_SCORE = 2.5f;
    final float OK_SCORE = 1.5f;
    final float BAD_SCORE = 0.5f;
    if (score >= GREAT_SCORE) {
        outStr = GREAT;
    } else if (score >= GOOD_SCORE) {
        outStr = GOOD;
    } else if (score >= OK_SCORE) {
        outStr = OK;
    } else if (score >= BAD_SCORE) {
        outStr = BAD;
    } else {
        outStr = AWFUL;
    }
    if (capturing) {
        if (outStr.equals(GREAT)) {
            // take a picture
            Bitmap bitmap = inputImage.toBitmap();
            new AsyncOperation().execute(bitmap);
            final float RESET_FEATURES = 0.01f;
            sharpnessMean = RESET_FEATURES;
            underExposureMean = RESET_FEATURES;
            overExposureMean = RESET_FEATURES;
            contrastMean = RESET_FEATURES;
            colorfulnessMean = RESET_FEATURES;
            brightnessMean = RESET_FEATURES;
        }
    }
    OutputPort outPort = getConnectedOutputPort("goodOrBadPic");
    FrameValue stringFrame = outPort.fetchAvailableFrame(null).asFrameValue();
    stringFrame.setValue(outStr);
    outPort.pushFrame(stringFrame);
    OutputPort scoreOutPort = getConnectedOutputPort("score");
    FrameValue scoreFrame = scoreOutPort.fetchAvailableFrame(null).asFrameValue();
    scoreFrame.setValue(score);
    scoreOutPort.pushFrame(scoreFrame);
}
Also used : OutputPort(androidx.media.filterfw.OutputPort) Bitmap(android.graphics.Bitmap) FrameImage2D(androidx.media.filterfw.FrameImage2D) FrameValue(androidx.media.filterfw.FrameValue)

Example 29 with OutputPort

use of androidx.media.filterfw.OutputPort in project android_frameworks_base by ResurrectionRemix.

the class FloatArrayToSizeFilter method onProcess.

/**
     * @see androidx.media.filterfw.Filter#onProcess()
     */
@Override
protected void onProcess() {
    FrameValue arrayFrame = getConnectedInputPort("array").pullFrame().asFrameValues();
    Object array = arrayFrame.getValue();
    int size = Array.getLength(array);
    OutputPort outPort = getConnectedOutputPort("size");
    FrameValue sizeFrame = outPort.fetchAvailableFrame(null).asFrameValue();
    sizeFrame.setValue(size);
    outPort.pushFrame(sizeFrame);
}
Also used : OutputPort(androidx.media.filterfw.OutputPort) FrameValue(androidx.media.filterfw.FrameValue)

Example 30 with OutputPort

use of androidx.media.filterfw.OutputPort in project android_frameworks_base by crdroidandroid.

the class MotionSensorWTime method onProcess.

@Override
protected void onProcess() {
    OutputPort outPort = getConnectedOutputPort("values");
    FrameValues outFrame = outPort.fetchAvailableFrame(null).asFrameValues();
    synchronized (mValues) {
        if (mCounter < 3 && mCounter >= 0) {
            mTemp[0][mCounter] = mValues[0];
            mTemp[1][mCounter] = mValues[1];
            mTemp[2][mCounter] = mValues[2];
        }
        mCounter = (mCounter + 1) % 3;
        mAvgValues[0] = (mTemp[0][0] + mTemp[0][1] + mTemp[0][2]) / 3;
        mAvgValues[1] = (mTemp[1][0] + mTemp[1][1] + mTemp[1][2]) / 3;
        mAvgValues[2] = (mTemp[2][0] + mTemp[2][1] + mTemp[2][2]) / 3;
        outFrame.setValues(mAvgValues);
    }
    outFrame.setTimestamp(System.currentTimeMillis() * 1000000L);
    outPort.pushFrame(outFrame);
    OutputPort timeOutPort = getConnectedOutputPort("timestamp");
    if (timeOutPort != null) {
        long timestamp = System.nanoTime();
        Log.v("MotionSensor", "Timestamp is: " + timestamp);
        FrameValue timeStampFrame = timeOutPort.fetchAvailableFrame(null).asFrameValue();
        timeStampFrame.setValue(timestamp);
        timeOutPort.pushFrame(timeStampFrame);
    }
}
Also used : OutputPort(androidx.media.filterfw.OutputPort) FrameValues(androidx.media.filterfw.FrameValues) FrameValue(androidx.media.filterfw.FrameValue)

Aggregations

OutputPort (androidx.media.filterfw.OutputPort)92 FrameValue (androidx.media.filterfw.FrameValue)60 FrameImage2D (androidx.media.filterfw.FrameImage2D)48 ByteBuffer (java.nio.ByteBuffer)36 FrameBuffer2D (androidx.media.filterfw.FrameBuffer2D)20 FrameValues (androidx.media.filterfw.FrameValues)12 Bitmap (android.graphics.Bitmap)8 Quad (androidx.media.filterfw.geometry.Quad)8 FloatBuffer (java.nio.FloatBuffer)8 Canvas (android.graphics.Canvas)4 Matrix (android.graphics.Matrix)4 Paint (android.graphics.Paint)4 Face (android.hardware.Camera.Face)4 RenderTarget (androidx.media.filterfw.RenderTarget)4