• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 Licnse.
15  */
16 
17 package android.mediapc.cts.common;
18 
19 import java.util.function.BiPredicate;
20 
21 /**
22  * Stores constants used by PerformanceClassEvaluator.  Constants relating to requirement number are
23  * stored in order as they appear in the Android CDD.  Constants relating to measurements are stored
24  * alphabetically.
25  */
26 public class RequirementConstants {
27     private static final String TAG = RequirementConstants.class.getSimpleName();
28 
29     public static final String REPORT_LOG_NAME = "CtsMediaPerformanceClassTestCases";
30     public static final String TN_FIELD_NAME = "test_name";
31     public static final String PC_FIELD_NAME = "performance_class";
32 
33     public static final String R5_1__H_1_1 = "r5_1__h_1_1"; // 5.1/H-1-1
34     public static final String R5_1__H_1_2 = "r5_1__h_1_2"; // 5.1/H-1-2
35     public static final String R5_1__H_1_3 = "r5_1__h_1_3"; // 5.1/H-1-3
36     public static final String R5_1__H_1_4 = "r5_1__h_1_4"; // 5.1/H-1-4
37     public static final String R5_1__H_1_5 = "r5_1__h_1_5"; // 5.1/H-1-5
38     public static final String R5_1__H_1_6 = "r5_1__h_1_6"; // 5.1/H-1-6
39     public static final String R5_1__H_1_7 = "r5_1__h_1_7"; // 5.1/H-1-7
40     public static final String R5_1__H_1_8 = "r5_1__h_1_8"; // 5.1/H-1-8
41     public static final String R5_1__H_1_9 = "r5_1__h_1_9"; // 5.1/H-1-9
42     public static final String R5_1__H_1_10 = "r5_1__h_1_10"; // 5.1/H-1-10
43     public static final String R5_1__H_1_11 = "r5_1__h_1_11"; // 5.1/H-1-11
44     public static final String R5_1__H_1_12 = "r5_1__h_1_12"; // 5.1/H-1-12
45     public static final String R5_1__H_1_13 = "r5_1__h_1_13"; // 5.1/H-1-13
46     public static final String R5_1__H_1_14 = "r5_1__h_1_14"; // 5.1/H-1-14
47     public static final String R5_1__H_1_15 = "r5_1__h_1_15"; // 5.1/H-1-16
48     public static final String R5_1__H_1_16 = "r5_1__h_1_16"; // 5.1/H-1-16
49     public static final String R5_1__H_1_17 = "r5_1__h_1_17"; // 5.1/H-1-17
50     public static final String R5_1__H_1_18 = "r5_1__h_1_18"; // 5.1/H-1-18
51     public static final String R5_1__H_1_19 = "r5_1__h_1_19"; // 5.1/H-1-19
52 
53     public static final String R5_3__H_1_1 = "r5_3__h_1_1"; // 5.3/H-1-1
54     public static final String R5_3__H_1_2 = "r5_3__h_1_2"; // 5.3/H-1-2
55 
56     public static final String R5_6__H_1_1 = "r5_6__h_1_1"; // 5.6/H-1-1
57 
58     public static final String R5_7__H_1_1 = "r5_7__h_1_1"; // 5.7/H-1-1
59     public static final String R5_7__H_1_2 = "r5_7__h_1_2"; // 5.7/H-1-2
60 
61     public static final String R5_12__H_1_2 = "r5_12__h_1_2"; // 5.12/H-1-2
62     public static final String R5_12__H_1_3 = "r5_12__h_1_3"; // 5.12/H-1-3
63 
64     public static final String R7_5__H_1_1 = "r7_5__h_1_1"; // 7.5/H-1-1
65     public static final String R7_5__H_1_2 = "r7_5__h_1_2"; // 7.5/H-1-2
66     public static final String R7_5__H_1_3 = "r7_5__h_1_3"; // 7.5/H-1-3
67     public static final String R7_5__H_1_4 = "r7_5__h_1_4"; // 7.5/H-1-4
68 
69     // these includes "its" because the proto in google3 was originally implemented incorrectly
70     public static final String R7_5__H_1_5 = "r7_5__h_1_5__its"; // 7.5/H-1-5
71     public static final String R7_5__H_1_6 = "r7_5__h_1_6__its"; // 7.5/H-1-6
72 
73     public static final String R7_5__H_1_8 = "r7_5__h_1_8"; // 7.5/H-1-8
74     public static final String R7_5__H_1_9 = "r7_5__h_1_9"; // 7.5/H-1-9
75     public static final String R7_5__H_1_10 = "r7_5__h_1_10"; // 7.5/H-1-10
76     public static final String R7_5__H_1_11 = "r7_5__h_1_11"; // 7.5/H-1-11
77     public static final String R7_5__H_1_12 = "r7_5__h_1_12"; // 7.5/H-1-12
78     public static final String R7_5__H_1_13 = "r7_5__h_1_13"; // 7.5/H-1-13
79     public static final String R7_5__H_1_14 = "r7_5__h_1_14"; // 7.5/H-1-14
80     public static final String R7_5__H_1_15 = "r7_5__h_1_15"; // 7.5/H-1-15
81     public static final String R7_5__H_1_16 = "r7_5__h_1_16"; // 7.5/H-1-16
82     public static final String R7_5__H_1_17 = "r7_5__h_1_17"; // 7.5/H-1-17
83 
84     public static final String R7_1_1_1__H_1_1 = "r7_1_1_1__h_1_1"; // 7.1.1.1/H-1-1
85     public static final String R7_1_1_3__H_1_1 = "r7_1_1_3__h_1_1"; // 7.1.1.3/H-1-1
86     public static final String R7_6_1__H_1_1 = "r7_6_1__h_1_1"; // 7.6.1/H-1-1
87     public static final String R7_1_1_1__H_2_1 = "r7_1_1_1__h_2_1"; // 7.1.1.1/H-2-1
88     public static final String R7_1_1_3__H_2_1 = "r7_1_1_3__h_2_1"; // 7.1.1.3/H-2-1
89     public static final String R7_6_1__H_2_1 = "r7_6_1__h_2_1"; // 7.6.1/H-2-1
90 
91     public static final String R8_2__H_1_1 = "r8_2__h_1_1"; // 8.2/H-1-1
92     public static final String R8_2__H_1_2 = "r8_2__h_1_2"; // 8.2/H-1-2
93     public static final String R8_2__H_1_3 = "r8_2__h_1_3"; // 8.2/H-1-3
94     public static final String R8_2__H_1_4 = "r8_2__h_1_4"; // 8.2/H-1-4
95     public static final String R8_2__H_2_1 = "r8_2__h_2_1"; // 8.2/H-2-1
96     public static final String R8_2__H_2_2 = "r8_2__h_2_2"; // 8.2/H-2-2
97     public static final String R8_2__H_2_3 = "r8_2__h_2_3"; // 8.2/H-2-3
98     public static final String R8_2__H_2_4 = "r8_2__h_2_4"; // 8.2/H-2-4
99 
100     public static final String R7_6_1__H_3_1 = "r7_6_1__h_3_1"; // 7.6.1/H-3-1, currently unused
101     public static final String RTBD = "tbd"; // placeholder for requirements without a set id
102 
103     public static final String API_JAVA_LATENCY = "java_latency_ms";
104     public static final String API_NATIVE_LATENCY = "native_latency_ms";
105     public static final String AV1_DEC_REQ = "av1_decoder_requirement_boolean";
106     public static final String AV1_ENC_BITRATE = "av1_encoder_bitrate";
107     public static final String AV1_ENC_FPS = "av1_encoder_fps";
108     public static final String AV1_ENC_RESOLUTION = "av1_encoder_resolution";
109     public static final String AVIF_DEC_REQ = "avif_image_decoder_boolean";
110 
111     public static final String CODEC_INIT_LATENCY = "codec_initialization_latency_ms";
112     public static final String CONCURRENT_FPS = "concurrent_fps";
113     public static final String CONCURRENT_REAR_FRONT_SUPPORTED = "rear_front_concurrent_camera";
114     public static final String CONCURRENT_SESSIONS = "concurrent_sessions";
115 
116     public static final String DISPLAY_DENSITY = "display_density_dpi";
117 
118     public static final String EXT_YUV_EXTENSION = "ext_yuv_target_supported";
119 
120     public static final String FILESYSTEM_IO_RATE = "filesystem_io_rate_mbps";
121     public static final String FRAME_RATE = "frame_rate";
122     public static final String FRAMES_DROPPED = "frame_drops_per_30sec";
123 
124     public static final String FRONT_CAMERA_DYNAMIC_TENBITS_SUPPORTED =
125             "front_camera_dynamic_tenbits_supported";
126     public static final String FRONT_CAMERA_FACE_DETECTION_SUPPORTED =
127             "front_camera_face_detection_supported";
128     public static final String FRONT_CAMERA_HWL_LEVEL = "front_primary_camera_hwl_level";
129     public static final String FRONT_CAMERA_LATENCY = "front_camera_latency";
130     public static final String FRONT_CAMERA_LOGICAL_MULTI_CAMERA_REQ_MET =
131             "front_camera_logical_multi_camera_req_met";
132     public static final String FRONT_CAMERA_PREVIEW_STABILIZATION_SUPPORTED =
133             "front_camera_preview_stabilization_supported";
134     public static final String FRONT_CAMERA_STREAM_USECASE_SUPPORTED =
135             "front_camera_stream_usecase_supported";
136     public static final String FRONT_CAMERA_TIMESTAMP_SOURCE =
137             "front_primary_camera_timestamp_source";
138     public static final String FRONT_CAMERA_ULTRAWIDE_ZOOMRATIO_REQ_MET =
139             "front_camera_ultrawide_zoom_req_met";
140     public static final String FRONT_CAMERAX_EXTENSION_NIGHT_SUPPORTED =
141             "front_camerax_extension_night_supported";
142     public static final String FRONT_CAMERA2_EXTENSION_NIGHT_SUPPORTED =
143             "front_camera2_extension_night_supported";
144 
145     public static final String LONG_RESOLUTION = "long_resolution_pixels";
146 
147     public static final String NUM_4k_HW_DEC = "number_4k_hw_decoders";
148     public static final String NUM_4k_HW_ENC = "number_4k_hw_encoders";
149     public static final String NUM_CRYPTO_HW_SECURE_ALL_SUPPORT =
150             "number_crypto_hw_secure_all_support";
151 
152     public static final String PHYSICAL_MEMORY = "physical_memory_mb";
153 
154     public static final String PRIMARY_CAMERA_AVAILABLE = "primary_camera_available";
155     public static final String PRIMARY_CAMERA_VIDEO_FPS =
156             "primary_camera_video_fps";
157     public static final String PRIMARY_CAMERA_RESOLUTION = "primary_camera_resolution";
158     public static final String PRIMARY_CAMERA_VIDEO_SIZE_REQ_SATISFIED =
159             "primary_camera_video_size_req_satisfied";
160 
161     public static final String REAR_CAMERA_240FPS_SUPPORTED = "rear_camera_240fps_supported";
162     public static final String REAR_CAMERA_DYNAMIC_TENBITS_SUPPORTED =
163             "rear_camera_dynamic_tenbits_supported";
164     public static final String REAR_CAMERA_FACE_DETECTION_SUPPORTED =
165             "rear_camera_face_detection_supported";
166     public static final String REAR_CAMERA_HWL_LEVEL = "rear_primary_camera_hwl_level";
167     public static final String REAR_CAMERA_LATENCY = "rear_camera_latency";
168     public static final String REAR_CAMERA_LOGICAL_MULTI_CAMERA_REQ_MET =
169             "rear_camera_logical_multi_camera_req_met";
170     public static final String REAR_CAMERA_PREVIEW_STABILIZATION_SUPPORTED =
171             "rear_camera_preview_stabilization_supported";
172     public static final String REAR_CAMERA_RAW_SUPPORTED = "rear_camera_raw_supported";
173     public static final String REAR_CAMERA_STREAM_USECASE_SUPPORTED =
174             "rear_camera_stream_usecase_supported";
175     public static final String REAR_CAMERA_TIMESTAMP_SOURCE =
176             "rear_primary_camera_timestamp_source";
177     public static final String REAR_CAMERA_ULTRAWIDE_ZOOMRATIO_REQ_MET =
178             "rear_camera_ultrawide_zoom_req_met";
179     public static final String REAR_CAMERAX_EXTENSION_NIGHT_SUPPORTED =
180             "rear_camerax_extension_night_supported";
181     public static final String REAR_CAMERA2_EXTENSION_NIGHT_SUPPORTED =
182             "rear_camera2_extension_night_supported";
183 
184     public static final String RGBA_1010102_COLOR_FORMAT_REQ = "rgba_1010102_color_format";
185 
186     public static final String SHORT_RESOLUTION = "short_resolution_pixels";
187     public static final String SECURE_REQ_SATISFIED = "secure_requirement_satisfied_boolean";
188     public static final String SUPPORTED_PERFORMANCE_POINTS = "supported_performance_points";
189 
190     public static final String TEST_RESOLUTION = "resolution";
191 
192     public enum Result {
193         NA, MET, UNMET
194     }
195 
196     public static final BiPredicate<Long, Long> LONG_GTE = RequirementConstants.gte();
197     public static final BiPredicate<Long, Long> LONG_LTE = RequirementConstants.lte();
198 
199     public static final BiPredicate<Integer, Integer> INTEGER_GTE = RequirementConstants.gte();
200     public static final BiPredicate<Integer, Integer> INTEGER_LTE = RequirementConstants.lte();
201     public static final BiPredicate<Integer, Integer> INTEGER_EQ = RequirementConstants.eq();
202 
203     public static final BiPredicate<Double, Double> DOUBLE_GTE = RequirementConstants.gte();
204     public static final BiPredicate<Double, Double> DOUBLE_LTE = RequirementConstants.lte();
205     public static final BiPredicate<Double, Double> DOUBLE_EQ = RequirementConstants.eq();
206 
207     public static final BiPredicate<Float, Float> FLOAT_LTE = RequirementConstants.lte();
208 
209     public static final BiPredicate<Boolean, Boolean> BOOLEAN_EQ = RequirementConstants.eq();
210 
211     /**
212      * Creates a >= predicate.
213      *
214      * This is convenience method to get the types right.
215      */
gte()216     private static <T, S extends Comparable<T>> BiPredicate<S, T> gte() {
217         return new BiPredicate<S, T>() {
218             @Override
219             public boolean test(S actual, T expected) {
220                 return actual.compareTo(expected) >= 0;
221             }
222 
223             @Override
224             public String toString() {
225                 return "Greater than or equal to";
226             }
227         };
228     }
229 
230     /**
231      * Creates a <= predicate.
232      */
233     private static <T, S extends Comparable<T>> BiPredicate<S, T> lte() {
234         return new BiPredicate<S, T>() {
235             @Override
236             public boolean test(S actual, T expected) {
237                 return actual.compareTo(expected) <= 0;
238             }
239 
240             @Override
241             public String toString() {
242                 return "Less than or equal to";
243             }
244         };
245     }
246 
247     /**
248      * Creates an == predicate.
249      */
250     private static <T, S extends Comparable<T>> BiPredicate<S, T> eq() {
251         return new BiPredicate<S, T>() {
252             @Override
253             public boolean test(S actual, T expected) {
254                 return actual.compareTo(expected) == 0;
255             }
256 
257             @Override
258             public String toString() {
259                 return "Equal to";
260             }
261         };
262     }
263 
264     private RequirementConstants() {} // class should not be instantiated
265 }
266