Cleanup filter preview test.

Change-Id: I626a1261affb86499ec398678523b0fe9e5fe679
diff --git a/tests/RenderScriptTests/LivePreview/Android.mk b/tests/RenderScriptTests/LivePreview/Android.mk
index be7ab6e..1b45573 100644
--- a/tests/RenderScriptTests/LivePreview/Android.mk
+++ b/tests/RenderScriptTests/LivePreview/Android.mk
@@ -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)
 
diff --git a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
index bba3b5b..f21331f 100644
--- a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
+++ b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
@@ -299,6 +299,38 @@
     }
 
 
+    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 @@
             mCamera.addCallbackBuffer(data);
             return;
         }
+        if (data == null) {
+            return;
+        }
 
         int expectedBytes = mPreviewSize.width * mPreviewSize.height *
                 ImageFormat.getBitsPerPixel(ImageFormat.NV21) / 8;
@@ -328,33 +363,16 @@
                     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);
     }
 
 
diff --git a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs
index b81cf93..6057eff 100644
--- a/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs
+++ b/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs
@@ -65,47 +65,31 @@
     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;
+    int2 xy = {x, y};
+    xy -= vignette_half_dims;
+    xy *= xy;
 
-    uint32_t dist = (x * x + y * y);
-    //float d = sqrt((float)dist) * vignette_dist_mod;
-    float d = vignette_dist_mod * dist;
-
-    //RS_DEBUG(d);
-
+    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 @@
         lumen = clamp(lumen, 0.f, 1.f);
 
         vignette_table[i] = (uchar)(lumen * 255.f + 0.5f);
-        RS_DEBUG(lumen);
     }
 }
 
@@ -142,7 +125,7 @@
 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;