Skip to content

Commit

Permalink
Fix image processing test to include all benchmark tests
Browse files Browse the repository at this point in the history
-- each test case can be excuted separately
-- add a test case to run all benchmarks.

DO NOT MERGE

Change-Id: I3c61dfe50267a6db11bc1895a4f37ed618a9103b
  • Loading branch information
Xia Wang committed Jan 14, 2013
1 parent 0dae634 commit a178d67
Show file tree
Hide file tree
Showing 3 changed files with 363 additions and 129 deletions.
Expand Up @@ -21,14 +21,7 @@
import android.graphics.BitmapFactory;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.renderscript.ScriptC;
import android.renderscript.RenderScript;
import android.renderscript.Type;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.Script;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
Expand All @@ -37,13 +30,8 @@
import android.widget.TextView;
import android.view.View;
import android.util.Log;
import java.lang.Math;

import android.os.Environment;
import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
Expand All @@ -52,12 +40,57 @@
public class ImageProcessingActivity extends Activity
implements SeekBar.OnSeekBarChangeListener {
private final String TAG = "Img";
private final String RESULT_FILE = "image_processing_result.csv";
public final String RESULT_FILE = "image_processing_result.csv";

/**
* Define enum type for test names
*/
public enum TestName {
LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed"),
LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed"),
LEVELS_VEC3_FULL ("Levels Vec3 Full"),
LEVELS_VEC4_FULL ("Levels Vec4 Full"),
BLUR_RADIUS_25 ("Blur radius 25"),
INTRINSIC_BLUE_RADIUS_25 ("Intrinsic Blur radius 25"),
GREYSCALE ("Greyscale"),
GRAIN ("Grain"),
FISHEYE_FULL ("Fisheye Full"),
FISHEYE_RELAXED ("Fisheye Relaxed"),
FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full"),
FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed"),
VIGNETTE_FULL ("Vignette Full"),
VIGNETTE_RELAXED ("Vignette Relaxed"),
VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full"),
VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed"),
GROUP_TEST_EMULATED ("Group Test (emulated)"),
GROUP_TEST_NATIVE ("Group Test (native)"),
CONVOLVE_3X3 ("Convolve 3x3"),
INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3"),
COLOR_MATRIX ("ColorMatrix"),
INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix"),
INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey"),
COPY ("Copy"),
CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)"),
CONVOLVE_5X5 ("Convolve 5x5"),
INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5"),
MANDELBROT ("Mandelbrot"),
INTRINSICS_BLEND ("Intrinsics Blend");

private final String name;

private TestName(String s) {
name = s;
}

// return quoted string as displayed test name
public String toString() {
return name;
}
}

Bitmap mBitmapIn;
Bitmap mBitmapIn2;
Bitmap mBitmapOut;
String mTestNames[];

private Spinner mSpinner;
private SeekBar mBar1;
Expand Down Expand Up @@ -140,96 +173,96 @@ void setupBars() {
}


void changeTest(int testID) {
void changeTest(TestName testName) {
if (mTest != null) {
mTest.destroy();
}
switch(testID) {
case 0:
switch(testName) {
case LEVELS_VEC3_RELAXED:
mTest = new LevelsV4(false, false);
break;
case 1:
case LEVELS_VEC4_RELAXED:
mTest = new LevelsV4(false, true);
break;
case 2:
case LEVELS_VEC3_FULL:
mTest = new LevelsV4(true, false);
break;
case 3:
case LEVELS_VEC4_FULL:
mTest = new LevelsV4(true, true);
break;
case 4:
case BLUR_RADIUS_25:
mTest = new Blur25(false);
break;
case 5:
case INTRINSIC_BLUE_RADIUS_25:
mTest = new Blur25(true);
break;
case 6:
case GREYSCALE:
mTest = new Greyscale();
break;
case 7:
case GRAIN:
mTest = new Grain();
break;
case 8:
case FISHEYE_FULL:
mTest = new Fisheye(false, false);
break;
case 9:
case FISHEYE_RELAXED:
mTest = new Fisheye(false, true);
break;
case 10:
case FISHEYE_APPROXIMATE_FULL:
mTest = new Fisheye(true, false);
break;
case 11:
case FISHEYE_APPROXIMATE_RELAXED:
mTest = new Fisheye(true, true);
break;
case 12:
case VIGNETTE_FULL:
mTest = new Vignette(false, false);
break;
case 13:
case VIGNETTE_RELAXED:
mTest = new Vignette(false, true);
break;
case 14:
case VIGNETTE_APPROXIMATE_FULL:
mTest = new Vignette(true, false);
break;
case 15:
case VIGNETTE_APPROXIMATE_RELAXED:
mTest = new Vignette(true, true);
break;
case 16:
case GROUP_TEST_EMULATED:
mTest = new GroupTest(false);
break;
case 17:
case GROUP_TEST_NATIVE:
mTest = new GroupTest(true);
break;
case 18:
case CONVOLVE_3X3:
mTest = new Convolve3x3(false);
break;
case 19:
case INTRINSICS_CONVOLVE_3X3:
mTest = new Convolve3x3(true);
break;
case 20:
case COLOR_MATRIX:
mTest = new ColorMatrix(false, false);
break;
case 21:
case INTRINSICS_COLOR_MATRIX:
mTest = new ColorMatrix(true, false);
break;
case 22:
case INTRINSICS_COLOR_MATRIX_GREY:
mTest = new ColorMatrix(true, true);
break;
case 23:
case COPY:
mTest = new Copy();
break;
case 24:
case CROSS_PROCESS_USING_LUT:
mTest = new CrossProcess();
break;
case 25:
case CONVOLVE_5X5:
mTest = new Convolve5x5(false);
break;
case 26:
case INTRINSICS_CONVOLVE_5X5:
mTest = new Convolve5x5(true);
break;
case 27:
case MANDELBROT:
mTest = new Mandelbrot();
break;
case 28:
case INTRINSICS_BLEND:
mTest = new Blend();
break;
}
Expand All @@ -243,45 +276,14 @@ void changeTest(int testID) {
}

void setupTests() {
mTestNames = new String[29];
mTestNames[0] = "Levels Vec3 Relaxed";
mTestNames[1] = "Levels Vec4 Relaxed";
mTestNames[2] = "Levels Vec3 Full";
mTestNames[3] = "Levels Vec4 Full";
mTestNames[4] = "Blur radius 25";
mTestNames[5] = "Intrinsic Blur radius 25";
mTestNames[6] = "Greyscale";
mTestNames[7] = "Grain";
mTestNames[8] = "Fisheye Full";
mTestNames[9] = "Fisheye Relaxed";
mTestNames[10] = "Fisheye Approximate Full";
mTestNames[11] = "Fisheye Approximate Relaxed";
mTestNames[12] = "Vignette Full";
mTestNames[13] = "Vignette Relaxed";
mTestNames[14] = "Vignette Approximate Full";
mTestNames[15] = "Vignette Approximate Relaxed";
mTestNames[16] = "Group Test (emulated)";
mTestNames[17] = "Group Test (native)";
mTestNames[18] = "Convolve 3x3";
mTestNames[19] = "Intrinsics Convolve 3x3";
mTestNames[20] = "ColorMatrix";
mTestNames[21] = "Intrinsics ColorMatrix";
mTestNames[22] = "Intrinsics ColorMatrix Grey";
mTestNames[23] = "Copy";
mTestNames[24] = "CrossProcess (using LUT)";
mTestNames[25] = "Convolve 5x5";
mTestNames[26] = "Intrinsics Convolve 5x5";
mTestNames[27] = "Mandelbrot";
mTestNames[28] = "Intrinsics Blend";

mTestSpinner.setAdapter(new ArrayAdapter<String>(
this, R.layout.spinner_layout, mTestNames));
mTestSpinner.setAdapter(new ArrayAdapter<TestName>(
this, R.layout.spinner_layout, TestName.values()));
}

private AdapterView.OnItemSelectedListener mTestSpinnerListener =
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
changeTest(pos);
changeTest(TestName.values()[pos]);
}

public void onNothingSelected(AdapterView parent) {
Expand Down Expand Up @@ -330,7 +332,7 @@ protected void onCreate(Bundle savedInstanceState) {
mBenchmarkResult.setText("Result: not run");

setupTests();
changeTest(0);
changeTest(TestName.LEVELS_VEC3_RELAXED);
}


Expand Down Expand Up @@ -369,18 +371,18 @@ public void benchmark_all(View v) {
try {
BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile));
Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath());
for (int i = 0; i < mTestNames.length; i++ ) {
changeTest(i);
for (TestName tn: TestName.values()) {
changeTest(tn);
float t = getBenchmark();
String s = new String("" + mTestNames[i] + ", " + t);
String s = new String("" + tn.toString() + ", " + t);
rsWriter.write(s + "\n");
Log.v(TAG, "Test " + s + "ms\n");
}
rsWriter.close();
} catch (IOException e) {
Log.v(TAG, "Unable to write result file " + e.getMessage());
}
changeTest(0);
changeTest(TestName.LEVELS_VEC3_RELAXED);
}

// For benchmark test
Expand All @@ -397,7 +399,6 @@ public float getBenchmark() {
mTest.finish();
} while (t > java.lang.System.currentTimeMillis());


//Log.v(TAG, "Benchmarking");
int ct = 0;
t = java.lang.System.currentTimeMillis();
Expand Down

0 comments on commit a178d67

Please sign in to comment.