1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2012 The Android Open Source Project 3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License. 6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at 7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software 11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and 14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License. 15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.image2; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.app.Activity; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Bundle; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.BitmapFactory; 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.Bitmap; 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.graphics.Canvas; 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.support.v8.renderscript.*; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.SurfaceView; 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.SurfaceHolder; 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.AdapterView; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.ArrayAdapter; 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.ImageView; 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.SeekBar; 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.Spinner; 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.widget.TextView; 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.view.View; 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log; 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.lang.Math; 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Environment; 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.app.Instrumentation; 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context; 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Intent; 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.net.Uri; 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.BufferedWriter; 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.File; 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.FileWriter; 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.io.IOException; 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class ImageProcessingActivity2 extends Activity 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams implements SeekBar.OnSeekBarChangeListener { 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private final String TAG = "Img"; 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public final String RESULT_FILE = "image_processing_result.csv"; 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams RenderScript mRS; 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mInPixelsAllocation; 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mInPixelsAllocation2; 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Allocation mOutPixelsAllocation; 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams /** 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Define enum type for test names 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public enum TestName { 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // totally there are 38 test cases 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed"), 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed"), 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC3_FULL ("Levels Vec3 Full"), 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams LEVELS_VEC4_FULL ("Levels Vec4 Full"), 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BLUR_RADIUS_25 ("Blur radius 25"), 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSIC_BLUE_RADIUS_25 ("Intrinsic Blur radius 25"), 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GREYSCALE ("Greyscale"), 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GRAIN ("Grain"), 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_FULL ("Fisheye Full"), 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_RELAXED ("Fisheye Relaxed"), 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full"), 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed"), 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_FULL ("Vignette Full"), 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_RELAXED ("Vignette Relaxed"), 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full"), 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed"), 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GROUP_TEST_EMULATED ("Group Test (emulated)"), 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams GROUP_TEST_NATIVE ("Group Test (native)"), 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONVOLVE_3X3 ("Convolve 3x3"), 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3"), 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COLOR_MATRIX ("ColorMatrix"), 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix"), 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey"), 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COPY ("Copy"), 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)"), 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONVOLVE_5X5 ("Convolve 5x5"), 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5"), 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams MANDELBROT ("Mandelbrot"), 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_BLEND ("Intrinsics Blend"), 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams INTRINSICS_BLUR_25G ("Intrinsics Blur 25 uchar"), 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams VIBRANCE ("Vibrance"), 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BW_FILTER ("BW Filter"), 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams SHADOWS ("Shadows"), 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams CONTRAST ("Contrast"), 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams EXPOSURE ("Exposure"), 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams WHITE_BALANCE ("White Balance"), 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COLOR_CUBE ("Color Cube"), 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams COLOR_CUBE_3D_INTRINSIC ("Color Cube (3D LUT intrinsic)"); 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private final String name; 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TestName(String s) { 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams name = s; 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // return quoted string as displayed test name 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public String toString() { 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return name; 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapIn; 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapIn2; 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Bitmap mBitmapOut; 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Spinner mSpinner; 119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar1; 120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar2; 121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar3; 122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar4; 123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SeekBar mBar5; 124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText1; 125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText2; 126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText3; 127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText4; 128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mText5; 129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private float mSaturation = 1.0f; 131572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 132572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TextView mBenchmarkResult; 133572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Spinner mTestSpinner; 134572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 135572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private SurfaceView mSurfaceView; 136572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private ImageView mDisplayView; 137572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 138572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private boolean mDoingBenchmark; 139572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 140572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private TestBase mTest; 141572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private int mRunCount; 142572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 143572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void updateDisplay() { 144572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.updateBitmap(mBitmapOut); 145572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView.invalidate(); 146572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 147572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 148572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 149572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (fromUser) { 150572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 151572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (seekBar == mBar1) { 152572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar1Changed(progress); 153572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar2) { 154572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar2Changed(progress); 155572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar3) { 156572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar3Changed(progress); 157572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar4) { 158572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar4Changed(progress); 159572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } else if (seekBar == mBar5) { 160572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar5Changed(progress); 161572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 162572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 163572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 164572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams updateDisplay(); 165572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 166572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 167572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 168572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onStartTrackingTouch(SeekBar seekBar) { 169572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 170572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 171572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onStopTrackingTouch(SeekBar seekBar) { 172572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 173572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 174572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void setupBars() { 175572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSpinner.setVisibility(View.VISIBLE); 176572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onSpinner1Setup(mSpinner); 177572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 178572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1.setVisibility(View.VISIBLE); 179572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText1.setVisibility(View.VISIBLE); 180572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar1Setup(mBar1, mText1); 181572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 182572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2.setVisibility(View.VISIBLE); 183572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText2.setVisibility(View.VISIBLE); 184572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar2Setup(mBar2, mText2); 185572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 186572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3.setVisibility(View.VISIBLE); 187572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText3.setVisibility(View.VISIBLE); 188572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar3Setup(mBar3, mText3); 189572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 190572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4.setVisibility(View.VISIBLE); 191572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText4.setVisibility(View.VISIBLE); 192572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar4Setup(mBar4, mText4); 193572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 194572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5.setVisibility(View.VISIBLE); 195572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText5.setVisibility(View.VISIBLE); 196572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.onBar5Setup(mBar5, mText5); 197572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 198572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 199572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 200572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void changeTest(TestName testName) { 201572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (mTest != null) { 202572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.destroy(); 203572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 204572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams switch(testName) { 205572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC3_RELAXED: 206572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(false, false); 207572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 208572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC4_RELAXED: 209572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(false, true); 210572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 211572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC3_FULL: 212572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(true, false); 213572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 214572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case LEVELS_VEC4_FULL: 215572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new LevelsV4(true, true); 216572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 217572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case BLUR_RADIUS_25: 218572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blur25(false); 219572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 220572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSIC_BLUE_RADIUS_25: 221572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blur25(true); 222572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 223572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GREYSCALE: 224572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Greyscale(); 225572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 226572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GRAIN: 227572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Grain(); 228572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 229572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_FULL: 230572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(false, false); 231572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 232572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_RELAXED: 233572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(false, true); 234572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 235572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_APPROXIMATE_FULL: 236572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(true, false); 237572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 238572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case FISHEYE_APPROXIMATE_RELAXED: 239572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Fisheye(true, true); 240572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 241572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_FULL: 242572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(false, false); 243572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 244572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_RELAXED: 245572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(false, true); 246572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 247572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_APPROXIMATE_FULL: 248572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(true, false); 249572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 250572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIGNETTE_APPROXIMATE_RELAXED: 251572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vignette(true, true); 252572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 253572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GROUP_TEST_EMULATED: 254572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new GroupTest(false); 255572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 256572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case GROUP_TEST_NATIVE: 257572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new GroupTest(true); 258572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 259572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONVOLVE_3X3: 260572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve3x3(false); 261572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 262572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_CONVOLVE_3X3: 263572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve3x3(true); 264572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 265572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COLOR_MATRIX: 266572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(false, false); 267572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 268572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_COLOR_MATRIX: 269572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(true, false); 270572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 271572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_COLOR_MATRIX_GREY: 272572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorMatrix(true, true); 273572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 274572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COPY: 275572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Copy(); 276572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 277572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CROSS_PROCESS_USING_LUT: 278572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new CrossProcess(); 279572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 280572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONVOLVE_5X5: 281572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve5x5(false); 282572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 283572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_CONVOLVE_5X5: 284572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Convolve5x5(true); 285572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 286572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case MANDELBROT: 287572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Mandelbrot(); 288572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 289572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_BLEND: 290572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blend(); 291572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 292572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case INTRINSICS_BLUR_25G: 293572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Blur25G(); 294572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 295572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case VIBRANCE: 296572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Vibrance(); 297572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 298572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case BW_FILTER: 299572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new BWFilter(); 300572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 301572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case SHADOWS: 302572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Shadows(); 303572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 304572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case CONTRAST: 305572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Contrast(); 306572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 307572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case EXPOSURE: 308572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new Exposure(); 309572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 310572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case WHITE_BALANCE: 311572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new WhiteBalance(); 312572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 313572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COLOR_CUBE: 314572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorCube(false); 315572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 316572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams case COLOR_CUBE_3D_INTRINSIC: 317572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest = new ColorCube(true); 318572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams break; 319572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 320572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 321572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.createBaseTest(this, mBitmapIn, mBitmapIn2, mBitmapOut); 322572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setupBars(); 323572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 324572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 325572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams updateDisplay(); 326572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: not run"); 327572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 328572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 329572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams void setupTests() { 330572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner.setAdapter(new ArrayAdapter<TestName>( 331572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams this, R.layout.spinner_layout, TestName.values())); 332572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 333572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 334572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private AdapterView.OnItemSelectedListener mTestSpinnerListener = 335572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams new AdapterView.OnItemSelectedListener() { 336572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 337572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.values()[pos]); 338572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 339572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 340572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void onNothingSelected(AdapterView parent) { 341572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 342572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 343572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 344572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 345572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams @Override 346572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected void onCreate(Bundle savedInstanceState) { 347572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super.onCreate(savedInstanceState); 348572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setContentView(R.layout.main); 349572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 350572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn = loadBitmap(R.drawable.img1600x1067); 351572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn2 = loadBitmap(R.drawable.img1600x1067b); 352572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(), 353572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBitmapIn.getConfig()); 354572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 355572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSurfaceView = (SurfaceView) findViewById(R.id.surface); 356572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 357572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView = (ImageView) findViewById(R.id.display); 358572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDisplayView.setImageBitmap(mBitmapOut); 359572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 360572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mSpinner = (Spinner) findViewById(R.id.spinner1); 361572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 362572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1 = (SeekBar) findViewById(R.id.slider1); 363572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2 = (SeekBar) findViewById(R.id.slider2); 364572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3 = (SeekBar) findViewById(R.id.slider3); 365572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4 = (SeekBar) findViewById(R.id.slider4); 366572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5 = (SeekBar) findViewById(R.id.slider5); 367572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 368572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar1.setOnSeekBarChangeListener(this); 369572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar2.setOnSeekBarChangeListener(this); 370572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar3.setOnSeekBarChangeListener(this); 371572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar4.setOnSeekBarChangeListener(this); 372572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBar5.setOnSeekBarChangeListener(this); 373572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 374572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText1 = (TextView) findViewById(R.id.slider1Text); 375572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText2 = (TextView) findViewById(R.id.slider2Text); 376572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText3 = (TextView) findViewById(R.id.slider3Text); 377572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText4 = (TextView) findViewById(R.id.slider4Text); 378572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mText5 = (TextView) findViewById(R.id.slider5Text); 379572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 380572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner = (Spinner) findViewById(R.id.filterselection); 381572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTestSpinner.setOnItemSelectedListener(mTestSpinnerListener); 382572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 383572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText); 384572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: not run"); 385572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 386572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 387572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRS = RenderScript.create(this); 388572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn); 389572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mInPixelsAllocation2 = Allocation.createFromBitmap(mRS, mBitmapIn2); 390572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut); 391572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 392572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 393572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams setupTests(); 394572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.LEVELS_VEC3_RELAXED); 395572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 396572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 397572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 398572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Bitmap loadBitmap(int resource) { 399572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final BitmapFactory.Options options = new BitmapFactory.Options(); 400572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams options.inPreferredConfig = Bitmap.Config.ARGB_8888; 401572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return BitmapFactory.decodeResource(getResources(), resource, options); 402572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 403572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 404572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // button hook 405572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void benchmark(View v) { 406572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float t = getBenchmark(); 407572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //long javaTime = javaFilter(); 408572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //mBenchmarkResult.setText("RS: " + t + " ms Java: " + javaTime + " ms"); 409572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mBenchmarkResult.setText("Result: " + t + " ms"); 410572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "getBenchmark: Renderscript frame time core ms " + t); 411572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 412572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 413572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void benchmark_all(View v) { 414572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // write result into a file 415572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams File externalStorage = Environment.getExternalStorageDirectory(); 416572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams if (!externalStorage.canWrite()) { 417572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "sdcard is not writable"); 418572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return; 419572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 420572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams File resultFile = new File(externalStorage, RESULT_FILE); 421572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //resultFile.setWritable(true, false); 422572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams try { 423572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile)); 424572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath()); 425572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (TestName tn: TestName.values()) { 426572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(tn); 427572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float t = getBenchmark(); 428572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams String s = new String("" + tn.toString() + ", " + t); 429572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rsWriter.write(s + "\n"); 430572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Test " + s + "ms\n"); 431572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 432572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams rsWriter.close(); 433572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } catch (IOException e) { 434572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Log.v(TAG, "Unable to write result file " + e.getMessage()); 435572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 436572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams changeTest(TestName.LEVELS_VEC3_RELAXED); 437572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 438572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 439572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams // For benchmark test 440572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public float getBenchmark() { 441572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDoingBenchmark = true; 442572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 443572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.setupBenchmark(); 444572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long result = 0; 445572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 446572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //Log.v(TAG, "Warming"); 447572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams long t = java.lang.System.currentTimeMillis() + 250; 448572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams do { 449572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 450572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.finish(); 451572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } while (t > java.lang.System.currentTimeMillis()); 452572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 453572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams //Log.v(TAG, "Benchmarking"); 454572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int ct = 0; 455572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams t = java.lang.System.currentTimeMillis(); 456572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams do { 457572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.runTest(); 458572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.finish(); 459572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ct++; 460572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } while ((t+1000) > java.lang.System.currentTimeMillis()); 461572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams t = java.lang.System.currentTimeMillis() - t; 462572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams float ft = (float)t; 463572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ft /= ct; 464572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 465572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mTest.exitBenchmark(); 466572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mDoingBenchmark = false; 467572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 468572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams return ft; 469572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 470572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 471