152541816fb308fcac31e86eb3293c2b28b0999deJason Sams/* 252541816fb308fcac31e86eb3293c2b28b0999deJason Sams * Copyright (C) 2012 The Android Open Source Project 352541816fb308fcac31e86eb3293c2b28b0999deJason Sams * 452541816fb308fcac31e86eb3293c2b28b0999deJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 552541816fb308fcac31e86eb3293c2b28b0999deJason Sams * you may not use this file except in compliance with the License. 652541816fb308fcac31e86eb3293c2b28b0999deJason Sams * You may obtain a copy of the License at 752541816fb308fcac31e86eb3293c2b28b0999deJason Sams * 852541816fb308fcac31e86eb3293c2b28b0999deJason Sams * http://www.apache.org/licenses/LICENSE-2.0 952541816fb308fcac31e86eb3293c2b28b0999deJason Sams * 1052541816fb308fcac31e86eb3293c2b28b0999deJason Sams * Unless required by applicable law or agreed to in writing, software 1152541816fb308fcac31e86eb3293c2b28b0999deJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1252541816fb308fcac31e86eb3293c2b28b0999deJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1352541816fb308fcac31e86eb3293c2b28b0999deJason Sams * See the License for the specific language governing permissions and 1452541816fb308fcac31e86eb3293c2b28b0999deJason Sams * limitations under the License. 1552541816fb308fcac31e86eb3293c2b28b0999deJason Sams */ 1652541816fb308fcac31e86eb3293c2b28b0999deJason Sams 1752541816fb308fcac31e86eb3293c2b28b0999deJason Samspackage com.android.rs.image; 1852541816fb308fcac31e86eb3293c2b28b0999deJason Sams 1952541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.app.Activity; 2052541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.content.Context; 2152541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.os.Bundle; 2252541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.graphics.BitmapFactory; 2352541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.graphics.Bitmap; 2452541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.graphics.Canvas; 2552541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.ScriptC; 2652541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.RenderScript; 2752541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.Type; 2852541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.Allocation; 2952541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.Element; 3052541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.renderscript.Script; 3152541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.view.SurfaceView; 3252541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.view.SurfaceHolder; 3352541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.widget.ImageView; 3452541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.widget.SeekBar; 3552541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.widget.TextView; 3652541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.view.View; 3752541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport android.util.Log; 3852541816fb308fcac31e86eb3293c2b28b0999deJason Samsimport java.lang.Math; 3974478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murrayimport android.widget.Spinner; 4052541816fb308fcac31e86eb3293c2b28b0999deJason Sams 4152541816fb308fcac31e86eb3293c2b28b0999deJason Samspublic class TestBase { 4252541816fb308fcac31e86eb3293c2b28b0999deJason Sams protected final String TAG = "Img"; 4352541816fb308fcac31e86eb3293c2b28b0999deJason Sams 4452541816fb308fcac31e86eb3293c2b28b0999deJason Sams protected RenderScript mRS; 4552541816fb308fcac31e86eb3293c2b28b0999deJason Sams protected Allocation mInPixelsAllocation; 4674478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray protected Allocation mInPixelsAllocation2; 4752541816fb308fcac31e86eb3293c2b28b0999deJason Sams protected Allocation mOutPixelsAllocation; 4852541816fb308fcac31e86eb3293c2b28b0999deJason Sams 4974478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray protected ImageProcessingActivity act; 5074478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray 5152541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Override to use UI elements 5252541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void onBar1Changed(int progress) { 5352541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 5452541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void onBar2Changed(int progress) { 5552541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 5652541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void onBar3Changed(int progress) { 5752541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 5852541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void onBar4Changed(int progress) { 5952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 6052541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void onBar5Changed(int progress) { 6152541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 6252541816fb308fcac31e86eb3293c2b28b0999deJason Sams 6352541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Override to use UI elements 6452541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Unused bars will be hidden. 6552541816fb308fcac31e86eb3293c2b28b0999deJason Sams public boolean onBar1Setup(SeekBar b, TextView t) { 6652541816fb308fcac31e86eb3293c2b28b0999deJason Sams b.setVisibility(View.INVISIBLE); 6752541816fb308fcac31e86eb3293c2b28b0999deJason Sams t.setVisibility(View.INVISIBLE); 6852541816fb308fcac31e86eb3293c2b28b0999deJason Sams return false; 6952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 7052541816fb308fcac31e86eb3293c2b28b0999deJason Sams public boolean onBar2Setup(SeekBar b, TextView t) { 7152541816fb308fcac31e86eb3293c2b28b0999deJason Sams b.setVisibility(View.INVISIBLE); 7252541816fb308fcac31e86eb3293c2b28b0999deJason Sams t.setVisibility(View.INVISIBLE); 7352541816fb308fcac31e86eb3293c2b28b0999deJason Sams return false; 7452541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 7552541816fb308fcac31e86eb3293c2b28b0999deJason Sams public boolean onBar3Setup(SeekBar b, TextView t) { 7652541816fb308fcac31e86eb3293c2b28b0999deJason Sams b.setVisibility(View.INVISIBLE); 7752541816fb308fcac31e86eb3293c2b28b0999deJason Sams t.setVisibility(View.INVISIBLE); 7852541816fb308fcac31e86eb3293c2b28b0999deJason Sams return false; 7952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 8052541816fb308fcac31e86eb3293c2b28b0999deJason Sams public boolean onBar4Setup(SeekBar b, TextView t) { 8152541816fb308fcac31e86eb3293c2b28b0999deJason Sams b.setVisibility(View.INVISIBLE); 8252541816fb308fcac31e86eb3293c2b28b0999deJason Sams t.setVisibility(View.INVISIBLE); 8352541816fb308fcac31e86eb3293c2b28b0999deJason Sams return false; 8452541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 8552541816fb308fcac31e86eb3293c2b28b0999deJason Sams public boolean onBar5Setup(SeekBar b, TextView t) { 8652541816fb308fcac31e86eb3293c2b28b0999deJason Sams b.setVisibility(View.INVISIBLE); 8752541816fb308fcac31e86eb3293c2b28b0999deJason Sams t.setVisibility(View.INVISIBLE); 8852541816fb308fcac31e86eb3293c2b28b0999deJason Sams return false; 8952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 9052541816fb308fcac31e86eb3293c2b28b0999deJason Sams 9174478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray public boolean onSpinner1Setup(Spinner s) { 9274478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray s.setVisibility(View.INVISIBLE); 9374478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray return false; 9474478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray } 9574478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray 9674478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray public final void createBaseTest(ImageProcessingActivity ipact, Bitmap b, Bitmap b2) { 9774478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray act = ipact; 9852541816fb308fcac31e86eb3293c2b28b0999deJason Sams mRS = RenderScript.create(act); 9952541816fb308fcac31e86eb3293c2b28b0999deJason Sams mInPixelsAllocation = Allocation.createFromBitmap(mRS, b, 10052541816fb308fcac31e86eb3293c2b28b0999deJason Sams Allocation.MipmapControl.MIPMAP_NONE, 10174478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray Allocation.USAGE_SCRIPT); 10274478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, b2, 10374478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray Allocation.MipmapControl.MIPMAP_NONE, 10452541816fb308fcac31e86eb3293c2b28b0999deJason Sams Allocation.USAGE_SCRIPT); 10552541816fb308fcac31e86eb3293c2b28b0999deJason Sams mOutPixelsAllocation = Allocation.createFromBitmap(mRS, b, 10652541816fb308fcac31e86eb3293c2b28b0999deJason Sams Allocation.MipmapControl.MIPMAP_NONE, 10752541816fb308fcac31e86eb3293c2b28b0999deJason Sams Allocation.USAGE_SCRIPT); 10852541816fb308fcac31e86eb3293c2b28b0999deJason Sams createTest(act.getResources()); 10952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 11052541816fb308fcac31e86eb3293c2b28b0999deJason Sams 11152541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Must override 11252541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void createTest(android.content.res.Resources res) { 11352541816fb308fcac31e86eb3293c2b28b0999deJason Sams android.util.Log.e("img", "implement createTest"); 11452541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 11552541816fb308fcac31e86eb3293c2b28b0999deJason Sams 11652541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Must override 11752541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void runTest() { 11852541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 11952541816fb308fcac31e86eb3293c2b28b0999deJason Sams 12052541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void finish() { 12152541816fb308fcac31e86eb3293c2b28b0999deJason Sams mRS.finish(); 12252541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 12352541816fb308fcac31e86eb3293c2b28b0999deJason Sams 124ed0b4f961f04ebf12cf900f4ce2d94e4473bf40bJason Sams public void destroy() { 125ed0b4f961f04ebf12cf900f4ce2d94e4473bf40bJason Sams mRS.destroy(); 1264b429417ba9fc0bf5e10f4dda1cf65f8eb473029Jason Sams mRS = null; 127ed0b4f961f04ebf12cf900f4ce2d94e4473bf40bJason Sams } 128ed0b4f961f04ebf12cf900f4ce2d94e4473bf40bJason Sams 12952541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void updateBitmap(Bitmap b) { 13052541816fb308fcac31e86eb3293c2b28b0999deJason Sams mOutPixelsAllocation.copyTo(b); 13152541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 13252541816fb308fcac31e86eb3293c2b28b0999deJason Sams 13352541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Override to configure specific benchmark config. 13452541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void setupBenchmark() { 13552541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 13652541816fb308fcac31e86eb3293c2b28b0999deJason Sams 13752541816fb308fcac31e86eb3293c2b28b0999deJason Sams // Override to reset after benchmark. 13852541816fb308fcac31e86eb3293c2b28b0999deJason Sams public void exitBenchmark() { 13952541816fb308fcac31e86eb3293c2b28b0999deJason Sams } 14052541816fb308fcac31e86eb3293c2b28b0999deJason Sams} 141