TestBase.java revision 4b429417ba9fc0bf5e10f4dda1cf65f8eb473029
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