15073402289471575a1bab5d43c9f3709a12148f3Jason Sams/* 25073402289471575a1bab5d43c9f3709a12148f3Jason Sams * Copyright (C) 2012 The Android Open Source Project 35073402289471575a1bab5d43c9f3709a12148f3Jason Sams * 45073402289471575a1bab5d43c9f3709a12148f3Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 55073402289471575a1bab5d43c9f3709a12148f3Jason Sams * you may not use this file except in compliance with the License. 65073402289471575a1bab5d43c9f3709a12148f3Jason Sams * You may obtain a copy of the License at 75073402289471575a1bab5d43c9f3709a12148f3Jason Sams * 85073402289471575a1bab5d43c9f3709a12148f3Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 95073402289471575a1bab5d43c9f3709a12148f3Jason Sams * 105073402289471575a1bab5d43c9f3709a12148f3Jason Sams * Unless required by applicable law or agreed to in writing, software 115073402289471575a1bab5d43c9f3709a12148f3Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 125073402289471575a1bab5d43c9f3709a12148f3Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135073402289471575a1bab5d43c9f3709a12148f3Jason Sams * See the License for the specific language governing permissions and 145073402289471575a1bab5d43c9f3709a12148f3Jason Sams * limitations under the License. 155073402289471575a1bab5d43c9f3709a12148f3Jason Sams */ 165073402289471575a1bab5d43c9f3709a12148f3Jason Sams 175073402289471575a1bab5d43c9f3709a12148f3Jason Samspackage com.android.rs.imagejb; 185073402289471575a1bab5d43c9f3709a12148f3Jason Sams 195073402289471575a1bab5d43c9f3709a12148f3Jason Samsimport android.app.Activity; 205073402289471575a1bab5d43c9f3709a12148f3Jason Samsimport android.view.View; 215073402289471575a1bab5d43c9f3709a12148f3Jason Samsimport android.util.Log; 225073402289471575a1bab5d43c9f3709a12148f3Jason Sams 235073402289471575a1bab5d43c9f3709a12148f3Jason Samspublic class IPTestListJB { 245073402289471575a1bab5d43c9f3709a12148f3Jason Sams private final String TAG = "Img"; 255073402289471575a1bab5d43c9f3709a12148f3Jason Sams public final String RESULT_FILE = "image_processing_result.csv"; 265073402289471575a1bab5d43c9f3709a12148f3Jason Sams 2731f4588d26e258c61543e90e796c4c9a8c2a1482Jason Sams public static final int FULL_FP = 0; 2831f4588d26e258c61543e90e796c4c9a8c2a1482Jason Sams public static final int RELAXED_FP = 1; 2931f4588d26e258c61543e90e796c4c9a8c2a1482Jason Sams public static final int INTRINSIC = 2; 3031f4588d26e258c61543e90e796c4c9a8c2a1482Jason Sams 315073402289471575a1bab5d43c9f3709a12148f3Jason Sams /** 325073402289471575a1bab5d43c9f3709a12148f3Jason Sams * Define enum type for test names 335073402289471575a1bab5d43c9f3709a12148f3Jason Sams */ 345073402289471575a1bab5d43c9f3709a12148f3Jason Sams public enum TestName { 35fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed", RELAXED_FP, 61.1f), 36fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed", RELAXED_FP, 44.6f), 37fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams LEVELS_VEC3_FULL ("Levels Vec3 Full", FULL_FP, 61.9f), 38fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams LEVELS_VEC4_FULL ("Levels Vec4 Full", FULL_FP, 73.f), 39fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams BLUR_RADIUS_25 ("Blur radius 25", RELAXED_FP, 1103.f), 40b4a8c2d0c147e8f7929ec048adceb340da26be22Pirama Arumuga Nainar BLUR_RADIUS_25_HALF ("Blur radius 25 Half Precision", RELAXED_FP, 1103.f), 41fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSIC_BLUR_RADIUS_25 ("Intrinsic Blur radius 25", INTRINSIC, 176.f), 42fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams GREYSCALE ("Greyscale", RELAXED_FP, 43.7f), 43fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams GRAIN ("Grain", RELAXED_FP, 147.4f), 44fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams FISHEYE_FULL ("Fisheye Full", FULL_FP, 192.f), 45fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams FISHEYE_RELAXED ("Fisheye Relaxed", RELAXED_FP, 181.f), 46fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full", FULL_FP, 193.f), 47fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed", RELAXED_FP, 183.f), 48fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams VIGNETTE_FULL ("Vignette Full", FULL_FP, 101.f), 49fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams VIGNETTE_RELAXED ("Vignette Relaxed", RELAXED_FP, 116.f), 50fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full", FULL_FP, 85.1f), 51fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed", RELAXED_FP, 96.7f), 52fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams GROUP_TEST_EMULATED ("Group Test (emulated)", INTRINSIC, 51.7f), 53fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams GROUP_TEST_NATIVE ("Group Test (native)", INTRINSIC, 52.9f), 54fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams CONVOLVE_3X3 ("Convolve 3x3", RELAXED_FP, 74.2f), 55fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3", INTRINSIC, 33.3f), 56fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams COLOR_MATRIX ("ColorMatrix", RELAXED_FP, 33.8f), 57fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix", INTRINSIC, 21.3f), 58fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey", INTRINSIC, 21.4f), 59fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams COPY ("Copy", RELAXED_FP, 21.4f), 60fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)", INTRINSIC, 23.1f), 61fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams CONVOLVE_5X5 ("Convolve 5x5", RELAXED_FP, 236.f), 62fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5", INTRINSIC, 39.6f), 63fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams MANDELBROT_FLOAT ("Mandelbrot (fp32)", FULL_FP, 117.f), 64fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams MANDELBROT_DOUBLE ("Mandelbrot (fp64)", FULL_FP, 136.f), 65fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_BLEND ("Intrinsics Blend", INTRINSIC, 105.f), 66fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams INTRINSICS_BLUR_25G ("Intrinsics Blur 25 uchar", INTRINSIC, 37.8f), 67fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams VIBRANCE ("Vibrance", RELAXED_FP, 103.f), 68fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams BW_FILTER ("BW Filter", RELAXED_FP, 86.f), 69fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams SHADOWS ("Shadows", RELAXED_FP, 130.f), 70fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams CONTRAST ("Contrast", RELAXED_FP, 45.4f), 71fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams EXPOSURE ("Exposure", RELAXED_FP, 73.4f), 72fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams WHITE_BALANCE ("White Balance", RELAXED_FP, 138.2f), 73fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams COLOR_CUBE ("Color Cube", RELAXED_FP, 83.9f), 74fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams COLOR_CUBE_3D_INTRINSIC ("Color Cube (3D LUT intrinsic)", INTRINSIC, 34.7f), 75fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams ARTISTIC1 ("Artistic 1", RELAXED_FP, 140.f), 76fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams RESIZE_BI_SCRIPT ("Resize BiCubic Script", RELAXED_FP, 253.f), 77fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams RESIZE_BI_INTRINSIC ("Resize BiCubic Intrinsic", INTRINSIC, 255.f), 78fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams POSTERIZE_INVOKE ("Posterize with invoke", RELAXED_FP, 215.f), 796b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams POSTERIZE_SET ("Posterize with set", INTRINSIC, 221.f), 806b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams HISTOGRAM_SCRIPT ("Histogram script", RELAXED_FP, 20.f), 816b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams HISTOGRAM_INTRINSIC ("Histogram intrinsic", INTRINSIC, 18.f); 825073402289471575a1bab5d43c9f3709a12148f3Jason Sams 835073402289471575a1bab5d43c9f3709a12148f3Jason Sams 845073402289471575a1bab5d43c9f3709a12148f3Jason Sams private final String name; 85dbad8eb5a8bb16488351c5236974812d282b7b82Jason Sams public final int group; 86b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams public final float baseline; 875073402289471575a1bab5d43c9f3709a12148f3Jason Sams 88b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams private TestName(String s, int g, float base) { 89b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams name = s; 90b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams group = g; 91b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams baseline = base; 92b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams } 93dbad8eb5a8bb16488351c5236974812d282b7b82Jason Sams private TestName(String s, int g) { 945073402289471575a1bab5d43c9f3709a12148f3Jason Sams name = s; 95dbad8eb5a8bb16488351c5236974812d282b7b82Jason Sams group = g; 96b7ead98b51e77d1f07934c8bd49ed6fc232360b3Jason Sams baseline = 1.f; 975073402289471575a1bab5d43c9f3709a12148f3Jason Sams } 985073402289471575a1bab5d43c9f3709a12148f3Jason Sams 995073402289471575a1bab5d43c9f3709a12148f3Jason Sams // return quoted string as displayed test name 1005073402289471575a1bab5d43c9f3709a12148f3Jason Sams public String toString() { 1015073402289471575a1bab5d43c9f3709a12148f3Jason Sams return name; 1025073402289471575a1bab5d43c9f3709a12148f3Jason Sams } 1035073402289471575a1bab5d43c9f3709a12148f3Jason Sams } 1045073402289471575a1bab5d43c9f3709a12148f3Jason Sams 1055073402289471575a1bab5d43c9f3709a12148f3Jason Sams static TestBase newTest(TestName testName) { 1065073402289471575a1bab5d43c9f3709a12148f3Jason Sams switch(testName) { 1075073402289471575a1bab5d43c9f3709a12148f3Jason Sams case LEVELS_VEC3_RELAXED: 1085073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new LevelsV4(false, false); 1095073402289471575a1bab5d43c9f3709a12148f3Jason Sams case LEVELS_VEC4_RELAXED: 1105073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new LevelsV4(false, true); 1115073402289471575a1bab5d43c9f3709a12148f3Jason Sams case LEVELS_VEC3_FULL: 1125073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new LevelsV4(true, false); 1135073402289471575a1bab5d43c9f3709a12148f3Jason Sams case LEVELS_VEC4_FULL: 1145073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new LevelsV4(true, true); 1155073402289471575a1bab5d43c9f3709a12148f3Jason Sams case BLUR_RADIUS_25: 116b4a8c2d0c147e8f7929ec048adceb340da26be22Pirama Arumuga Nainar return new Blur25(false, false); 117b4a8c2d0c147e8f7929ec048adceb340da26be22Pirama Arumuga Nainar case BLUR_RADIUS_25_HALF: 118b4a8c2d0c147e8f7929ec048adceb340da26be22Pirama Arumuga Nainar return new Blur25(false, true); 11969138aaab26753ae55404375f22043ec4e2b59cfJason Sams case INTRINSIC_BLUR_RADIUS_25: 120b4a8c2d0c147e8f7929ec048adceb340da26be22Pirama Arumuga Nainar return new Blur25(true, false); 1215073402289471575a1bab5d43c9f3709a12148f3Jason Sams case GREYSCALE: 1225073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Greyscale(); 1235073402289471575a1bab5d43c9f3709a12148f3Jason Sams case GRAIN: 1245073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Grain(); 1255073402289471575a1bab5d43c9f3709a12148f3Jason Sams case FISHEYE_FULL: 1265073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Fisheye(false, false); 1275073402289471575a1bab5d43c9f3709a12148f3Jason Sams case FISHEYE_RELAXED: 1285073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Fisheye(false, true); 1295073402289471575a1bab5d43c9f3709a12148f3Jason Sams case FISHEYE_APPROXIMATE_FULL: 1305073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Fisheye(true, false); 1315073402289471575a1bab5d43c9f3709a12148f3Jason Sams case FISHEYE_APPROXIMATE_RELAXED: 1325073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Fisheye(true, true); 1335073402289471575a1bab5d43c9f3709a12148f3Jason Sams case VIGNETTE_FULL: 1345073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Vignette(false, false); 1355073402289471575a1bab5d43c9f3709a12148f3Jason Sams case VIGNETTE_RELAXED: 1365073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Vignette(false, true); 1375073402289471575a1bab5d43c9f3709a12148f3Jason Sams case VIGNETTE_APPROXIMATE_FULL: 1385073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Vignette(true, false); 1395073402289471575a1bab5d43c9f3709a12148f3Jason Sams case VIGNETTE_APPROXIMATE_RELAXED: 1405073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Vignette(true, true); 1415073402289471575a1bab5d43c9f3709a12148f3Jason Sams case GROUP_TEST_EMULATED: 1425073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new GroupTest(false); 1435073402289471575a1bab5d43c9f3709a12148f3Jason Sams case GROUP_TEST_NATIVE: 1445073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new GroupTest(true); 1455073402289471575a1bab5d43c9f3709a12148f3Jason Sams case CONVOLVE_3X3: 1465073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Convolve3x3(false); 1475073402289471575a1bab5d43c9f3709a12148f3Jason Sams case INTRINSICS_CONVOLVE_3X3: 1485073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Convolve3x3(true); 1495073402289471575a1bab5d43c9f3709a12148f3Jason Sams case COLOR_MATRIX: 1505073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new ColorMatrix(false, false); 1515073402289471575a1bab5d43c9f3709a12148f3Jason Sams case INTRINSICS_COLOR_MATRIX: 1525073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new ColorMatrix(true, false); 1535073402289471575a1bab5d43c9f3709a12148f3Jason Sams case INTRINSICS_COLOR_MATRIX_GREY: 1545073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new ColorMatrix(true, true); 1555073402289471575a1bab5d43c9f3709a12148f3Jason Sams case COPY: 1565073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Copy(); 1575073402289471575a1bab5d43c9f3709a12148f3Jason Sams case CROSS_PROCESS_USING_LUT: 1585073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new CrossProcess(); 1595073402289471575a1bab5d43c9f3709a12148f3Jason Sams case CONVOLVE_5X5: 1605073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Convolve5x5(false); 1615073402289471575a1bab5d43c9f3709a12148f3Jason Sams case INTRINSICS_CONVOLVE_5X5: 1625073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Convolve5x5(true); 163859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams case MANDELBROT_FLOAT: 164859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams return new Mandelbrot(false); 165859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams case MANDELBROT_DOUBLE: 166859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams return new Mandelbrot(true); 1675073402289471575a1bab5d43c9f3709a12148f3Jason Sams case INTRINSICS_BLEND: 1685073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Blend(); 16969138aaab26753ae55404375f22043ec4e2b59cfJason Sams case INTRINSICS_BLUR_25G: 17069138aaab26753ae55404375f22043ec4e2b59cfJason Sams return new Blur25G(); 1715073402289471575a1bab5d43c9f3709a12148f3Jason Sams case VIBRANCE: 1725073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Vibrance(); 1735073402289471575a1bab5d43c9f3709a12148f3Jason Sams case BW_FILTER: 1745073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new BWFilter(); 1755073402289471575a1bab5d43c9f3709a12148f3Jason Sams case SHADOWS: 1765073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Shadows(); 1775073402289471575a1bab5d43c9f3709a12148f3Jason Sams case CONTRAST: 1785073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Contrast(); 1795073402289471575a1bab5d43c9f3709a12148f3Jason Sams case EXPOSURE: 1805073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new Exposure(); 1815073402289471575a1bab5d43c9f3709a12148f3Jason Sams case WHITE_BALANCE: 1825073402289471575a1bab5d43c9f3709a12148f3Jason Sams return new WhiteBalance(); 18369138aaab26753ae55404375f22043ec4e2b59cfJason Sams case COLOR_CUBE: 18469138aaab26753ae55404375f22043ec4e2b59cfJason Sams return new ColorCube(false); 18569138aaab26753ae55404375f22043ec4e2b59cfJason Sams case COLOR_CUBE_3D_INTRINSIC: 18669138aaab26753ae55404375f22043ec4e2b59cfJason Sams return new ColorCube(true); 187859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams case ARTISTIC1: 188859c4817355fcb86ea3aa103d1d1c5fa12ce81faJason Sams return new Artistic1(); 1890ef64c5373a119eb73cbf7b1f7cf7d1da12d97d3Jason Sams case RESIZE_BI_SCRIPT: 1900ef64c5373a119eb73cbf7b1f7cf7d1da12d97d3Jason Sams return new Resize(false); 1910ef64c5373a119eb73cbf7b1f7cf7d1da12d97d3Jason Sams case RESIZE_BI_INTRINSIC: 1920ef64c5373a119eb73cbf7b1f7cf7d1da12d97d3Jason Sams return new Resize(true); 193fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams case POSTERIZE_INVOKE: 194fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams return new Posterize(true); 195fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams case POSTERIZE_SET: 196fe801921741c8bbec2b28eb49690ff88d149f1b4Jason Sams return new Posterize(false); 1976b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams case HISTOGRAM_SCRIPT: 1986b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams return new Histogram(false); 1996b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams case HISTOGRAM_INTRINSIC: 2006b9cb41efc17c2731a2762c1ac6071ba5684af63Jason Sams return new Histogram(true); 2015073402289471575a1bab5d43c9f3709a12148f3Jason Sams } 2025073402289471575a1bab5d43c9f3709a12148f3Jason Sams return null; 2035073402289471575a1bab5d43c9f3709a12148f3Jason Sams } 2045073402289471575a1bab5d43c9f3709a12148f3Jason Sams} 2055073402289471575a1bab5d43c9f3709a12148f3Jason Sams 206