Home | History | Annotate | Download | only in image
      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 
     17 package com.android.rs.imagejb;
     18 
     19 import android.app.Activity;
     20 import android.view.View;
     21 import android.util.Log;
     22 
     23 public 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