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

Commit 603b2d07 authored by Jason Sams's avatar Jason Sams Committed by Android (Google) Code Review
Browse files

Merge "Cleanup filter preview test."

parents 105b78bb 702fb2c5
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;