Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 702fb2c5 authored by Jason Sams's avatar Jason Sams
Browse files

Cleanup filter preview test.

Change-Id: I626a1261affb86499ec398678523b0fe9e5fe679
parent 2ff5ff24
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_TAGS := tests

LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)

+37 −19
Original line number Diff line number Diff line
@@ -299,6 +299,38 @@ public class CameraPreviewActivity extends Activity
    }


    private class ProcessPreviewDataTask extends AsyncTask<byte[], Void, Boolean> {
        protected Boolean doInBackground(byte[]... datas) {
            byte[] data = datas[0];

            long t1 = java.lang.System.currentTimeMillis();

            mFilterYuv.execute(data);
            mFilterYuv.copyOut(mCallbackBitmap);

            long t2 = java.lang.System.currentTimeMillis();
            mTiming[mTimingSlot++] = t2 - t1;
            if (mTimingSlot >= mTiming.length) {
                float total = 0;
                for (int i=0; i<mTiming.length; i++) {
                    total += (float)mTiming[i];
                }
                total /= mTiming.length;
                Log.e(TAG, "time + " + total);
                mTimingSlot = 0;
            }

            mCamera.addCallbackBuffer(data);
            mProcessInProgress = false;
            return true;
        }

        protected void onPostExecute(Boolean result) {
            mFormatView.invalidate();
        }

    }

    private long mTiming[] = new long[50];
    private int mTimingSlot = 0;

@@ -307,6 +339,9 @@ public class CameraPreviewActivity extends Activity
            mCamera.addCallbackBuffer(data);
            return;
        }
        if (data == null) {
            return;
        }

        int expectedBytes = mPreviewSize.width * mPreviewSize.height *
                ImageFormat.getBitsPerPixel(ImageFormat.NV21) / 8;
@@ -328,33 +363,16 @@ public class CameraPreviewActivity extends Activity
                    Bitmap.createBitmap(
                        mPreviewSize.width, mPreviewSize.height,
                        Bitmap.Config.ARGB_8888);
            mFormatView.setImageBitmap(mCallbackBitmap);
            mFilterYuv = new RsYuv(mRS, getResources(), mPreviewSize.width, mPreviewSize.height);
            mFormatView.setImageBitmap(mCallbackBitmap);
        }

        long t1 = java.lang.System.currentTimeMillis();

        mFilterYuv.execute(data);
        mFilterYuv.copyOut(mCallbackBitmap);

        long t2 = java.lang.System.currentTimeMillis();
        mTiming[mTimingSlot++] = t2 - t1;
        if (mTimingSlot >= mTiming.length) {
            float total = 0;
            for (int i=0; i<mTiming.length; i++) {
                total += (float)mTiming[i];
            }
            total /= mTiming.length;
            Log.e(TAG, "time + " + total);
            mTimingSlot = 0;
        }


        mFormatView.invalidate();

        mCamera.addCallbackBuffer(data);
        mProcessInProgress = false;
        mProcessInProgress = true;
        new ProcessPreviewDataTask().execute(data);
    }


+6 −23
Original line number Diff line number Diff line
@@ -65,47 +65,31 @@ static float4 colortemp(float4 color) {
    return new_color;
}

//float vignetteCenter = (img_width/2.0, img_height/2.0)


static float vignette_dist_mod;
int2 vignette_half_dims;
static uchar4 vignette(uchar4 color, uint32_t x, uint32_t y) {
    x -= gWidth >> 1;
    y -= gHeight >> 1;

    uint32_t dist = (x * x + y * y);
    //float d = sqrt((float)dist) * vignette_dist_mod;
    float d = vignette_dist_mod * dist;

    //RS_DEBUG(d);
    int2 xy = {x, y};
    xy -= vignette_half_dims;
    xy *= xy;

    float d = vignette_dist_mod * (xy.x + xy.y);
    ushort4 c = convert_ushort4(color);
    c *= vignette_table[(int)d];
    c >>= (ushort4)8;
    return convert_uchar4(c);
}



void root(uchar4 *out, uint32_t x, uint32_t y) {
    uchar Y = gYuvIn[(y * gWidth) + x];
    uchar *uv = &gYuvIn[gWidth * gHeight];
    uv += (((x>>1)<<1) + (y>>1) * gWidth);

#if 0
    float4 p = toRGB_F(Y, uv[1], uv[0]);
    p = crossProcess(p);
    p = colortemp(p);
    out->rgba = rsPackColorTo8888(p);

#else
    uchar4 p = rsYuvToRGBA_uchar4(Y, uv[1], uv[0]);
    p = crossProcess_i(p);
    p = vignette(p, x, y);

    out->rgba = p;
#endif

    out->a = 0xff;
}

@@ -131,7 +115,6 @@ static void precompute() {
        lumen = clamp(lumen, 0.f, 1.f);

        vignette_table[i] = (uchar)(lumen * 255.f + 0.5f);
        RS_DEBUG(lumen);
    }
}

@@ -142,7 +125,7 @@ void init() {
void setSize(int w, int h) {
    gWidth = w;
    gHeight = h;

    vignette_half_dims = (int2){w / 2, h / 2};
    vignette_dist_mod = 512.f;
    vignette_dist_mod /= (float)(w*w + h*h) / 4.f;