Loading tests/RenderScriptTests/LivePreview/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java +37 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs +6 −23 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); } } Loading @@ -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; Loading Loading
tests/RenderScriptTests/LivePreview/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java +37 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading
tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/yuv.rs +6 −23 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); } } Loading @@ -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; Loading