1/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.rs.imagejb;
18
19import android.app.Activity;
20import android.view.View;
21import android.util.Log;
22
23public class IPTestListJB {
24    private final String TAG = "Img";
25    public final String RESULT_FILE = "image_processing_result.csv";
26
27    public static final int FULL_FP = 0;
28    public static final int RELAXED_FP = 1;
29    public static final int INTRINSIC = 2;
30
31    /**
32     * Define enum type for test names
33     */
34    public enum TestName {
35        LEVELS_VEC3_RELAXED ("Levels Vec3 Relaxed", RELAXED_FP, 61.1f),
36        LEVELS_VEC4_RELAXED ("Levels Vec4 Relaxed", RELAXED_FP, 44.6f),
37        LEVELS_VEC3_FULL ("Levels Vec3 Full", FULL_FP, 61.9f),
38        LEVELS_VEC4_FULL ("Levels Vec4 Full", FULL_FP, 73.f),
39        BLUR_RADIUS_25 ("Blur radius 25", RELAXED_FP, 1103.f),
40        BLUR_RADIUS_25_HALF ("Blur radius 25 Half Precision", RELAXED_FP, 1103.f),
41        INTRINSIC_BLUR_RADIUS_25 ("Intrinsic Blur radius 25", INTRINSIC, 176.f),
42        GREYSCALE ("Greyscale", RELAXED_FP, 43.7f),
43        GRAIN ("Grain", RELAXED_FP, 147.4f),
44        FISHEYE_FULL ("Fisheye Full", FULL_FP, 192.f),
45        FISHEYE_RELAXED ("Fisheye Relaxed", RELAXED_FP, 181.f),
46        FISHEYE_APPROXIMATE_FULL ("Fisheye Approximate Full", FULL_FP, 193.f),
47        FISHEYE_APPROXIMATE_RELAXED ("Fisheye Approximate Relaxed", RELAXED_FP, 183.f),
48        VIGNETTE_FULL ("Vignette Full", FULL_FP, 101.f),
49        VIGNETTE_RELAXED ("Vignette Relaxed", RELAXED_FP, 116.f),
50        VIGNETTE_APPROXIMATE_FULL ("Vignette Approximate Full", FULL_FP, 85.1f),
51        VIGNETTE_APPROXIMATE_RELAXED ("Vignette Approximate Relaxed", RELAXED_FP, 96.7f),
52        GROUP_TEST_EMULATED ("Group Test (emulated)", INTRINSIC, 51.7f),
53        GROUP_TEST_NATIVE ("Group Test (native)", INTRINSIC, 52.9f),
54        CONVOLVE_3X3 ("Convolve 3x3", RELAXED_FP, 74.2f),
55        INTRINSICS_CONVOLVE_3X3 ("Intrinsics Convolve 3x3", INTRINSIC, 33.3f),
56        COLOR_MATRIX ("ColorMatrix", RELAXED_FP, 33.8f),
57        INTRINSICS_COLOR_MATRIX ("Intrinsics ColorMatrix", INTRINSIC, 21.3f),
58        INTRINSICS_COLOR_MATRIX_GREY ("Intrinsics ColorMatrix Grey", INTRINSIC, 21.4f),
59        COPY ("Copy", RELAXED_FP, 21.4f),
60        CROSS_PROCESS_USING_LUT ("CrossProcess (using LUT)", INTRINSIC, 23.1f),
61        CONVOLVE_5X5 ("Convolve 5x5", RELAXED_FP, 236.f),
62        INTRINSICS_CONVOLVE_5X5 ("Intrinsics Convolve 5x5", INTRINSIC, 39.6f),
63        MANDELBROT_FLOAT ("Mandelbrot (fp32)", FULL_FP, 117.f),
64        MANDELBROT_DOUBLE ("Mandelbrot (fp64)", FULL_FP, 136.f),
65        INTRINSICS_BLEND ("Intrinsics Blend", INTRINSIC, 105.f),
66        INTRINSICS_BLUR_25G ("Intrinsics Blur 25 uchar", INTRINSIC, 37.8f),
67        VIBRANCE ("Vibrance", RELAXED_FP, 103.f),
68        BW_FILTER ("BW Filter", RELAXED_FP, 86.f),
69        SHADOWS ("Shadows", RELAXED_FP, 130.f),
70        CONTRAST ("Contrast", RELAXED_FP, 45.4f),
71        EXPOSURE ("Exposure", RELAXED_FP, 73.4f),
72        WHITE_BALANCE ("White Balance", RELAXED_FP, 138.2f),
73        COLOR_CUBE ("Color Cube", RELAXED_FP, 83.9f),
74        COLOR_CUBE_3D_INTRINSIC ("Color Cube (3D LUT intrinsic)", INTRINSIC, 34.7f),
75        ARTISTIC1 ("Artistic 1", RELAXED_FP, 140.f),
76        RESIZE_BI_SCRIPT ("Resize BiCubic Script", RELAXED_FP, 253.f),
77        RESIZE_BI_INTRINSIC ("Resize BiCubic Intrinsic", INTRINSIC, 255.f),
78        POSTERIZE_INVOKE ("Posterize with invoke", RELAXED_FP, 215.f),
79        POSTERIZE_SET ("Posterize with set", INTRINSIC, 221.f),
80        HISTOGRAM_SCRIPT ("Histogram script", RELAXED_FP, 20.f),
81        HISTOGRAM_INTRINSIC ("Histogram intrinsic", INTRINSIC, 18.f);
82
83
84        private final String name;
85        public final int group;
86        public final float baseline;
87
88        private TestName(String s, int g, float base) {
89            name = s;
90            group = g;
91            baseline = base;
92        }
93        private TestName(String s, int g) {
94            name = s;
95            group = g;
96            baseline = 1.f;
97        }
98
99        // return quoted string as displayed test name
100        public String toString() {
101            return name;
102        }
103    }
104
105    static TestBase newTest(TestName testName) {
106        switch(testName) {
107        case LEVELS_VEC3_RELAXED:
108            return new LevelsV4(false, false);
109        case LEVELS_VEC4_RELAXED:
110            return new LevelsV4(false, true);
111        case LEVELS_VEC3_FULL:
112            return new LevelsV4(true, false);
113        case LEVELS_VEC4_FULL:
114            return new LevelsV4(true, true);
115        case BLUR_RADIUS_25:
116            return new Blur25(false, false);
117        case BLUR_RADIUS_25_HALF:
118            return new Blur25(false, true);
119        case INTRINSIC_BLUR_RADIUS_25:
120            return new Blur25(true, false);
121        case GREYSCALE:
122            return new Greyscale();
123        case GRAIN:
124            return new Grain();
125        case FISHEYE_FULL:
126            return new Fisheye(false, false);
127        case FISHEYE_RELAXED:
128            return new Fisheye(false, true);
129        case FISHEYE_APPROXIMATE_FULL:
130            return new Fisheye(true, false);
131        case FISHEYE_APPROXIMATE_RELAXED:
132            return new Fisheye(true, true);
133        case VIGNETTE_FULL:
134            return new Vignette(false, false);
135        case VIGNETTE_RELAXED:
136            return new Vignette(false, true);
137        case VIGNETTE_APPROXIMATE_FULL:
138            return new Vignette(true, false);
139        case VIGNETTE_APPROXIMATE_RELAXED:
140            return new Vignette(true, true);
141        case GROUP_TEST_EMULATED:
142            return new GroupTest(false);
143        case GROUP_TEST_NATIVE:
144            return new GroupTest(true);
145        case CONVOLVE_3X3:
146            return new Convolve3x3(false);
147        case INTRINSICS_CONVOLVE_3X3:
148            return new Convolve3x3(true);
149        case COLOR_MATRIX:
150            return new ColorMatrix(false, false);
151        case INTRINSICS_COLOR_MATRIX:
152            return new ColorMatrix(true, false);
153        case INTRINSICS_COLOR_MATRIX_GREY:
154            return new ColorMatrix(true, true);
155        case COPY:
156            return new Copy();
157        case CROSS_PROCESS_USING_LUT:
158            return new CrossProcess();
159        case CONVOLVE_5X5:
160            return new Convolve5x5(false);
161        case INTRINSICS_CONVOLVE_5X5:
162            return new Convolve5x5(true);
163        case MANDELBROT_FLOAT:
164            return new Mandelbrot(false);
165        case MANDELBROT_DOUBLE:
166            return new Mandelbrot(true);
167        case INTRINSICS_BLEND:
168            return new Blend();
169        case INTRINSICS_BLUR_25G:
170            return new Blur25G();
171        case VIBRANCE:
172            return new Vibrance();
173        case BW_FILTER:
174            return new BWFilter();
175        case SHADOWS:
176            return new Shadows();
177        case CONTRAST:
178            return new Contrast();
179        case EXPOSURE:
180            return new Exposure();
181        case WHITE_BALANCE:
182            return new WhiteBalance();
183        case COLOR_CUBE:
184            return new ColorCube(false);
185        case COLOR_CUBE_3D_INTRINSIC:
186            return new ColorCube(true);
187        case ARTISTIC1:
188            return new Artistic1();
189        case RESIZE_BI_SCRIPT:
190            return new Resize(false);
191        case RESIZE_BI_INTRINSIC:
192            return new Resize(true);
193        case POSTERIZE_INVOKE:
194            return new Posterize(true);
195        case POSTERIZE_SET:
196            return new Posterize(false);
197        case HISTOGRAM_SCRIPT:
198            return new Histogram(false);
199        case HISTOGRAM_INTRINSIC:
200            return new Histogram(true);
201        }
202        return null;
203    }
204}
205
206