xref: /aosp_15_r20/cts/tests/mediapc/requirements/requirements.proto (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project
2*b7c941bbSAndroid Build Coastguard Worker//
3*b7c941bbSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*b7c941bbSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*b7c941bbSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*b7c941bbSAndroid Build Coastguard Worker//
7*b7c941bbSAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*b7c941bbSAndroid Build Coastguard Worker//
9*b7c941bbSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*b7c941bbSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*b7c941bbSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*b7c941bbSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*b7c941bbSAndroid Build Coastguard Worker// limitations under the License.
14*b7c941bbSAndroid Build Coastguard Worker
15*b7c941bbSAndroid Build Coastguard Workersyntax = "proto2";
16*b7c941bbSAndroid Build Coastguard Worker
17*b7c941bbSAndroid Build Coastguard Worker// Changes to this file require manaul update of the AOSP Go code.
18*b7c941bbSAndroid Build Coastguard Worker// update the go code with:
19*b7c941bbSAndroid Build Coastguard Worker//   aprotoc --go_out=paths=source_relative:. \
20*b7c941bbSAndroid Build Coastguard Worker//     cts/tests/mediapc/requirements/mpc.proto \
21*b7c941bbSAndroid Build Coastguard Worker//     cts/tests/mediapc/requirements/requirements.proto
22*b7c941bbSAndroid Build Coastguard Worker
23*b7c941bbSAndroid Build Coastguard Workerpackage android.media.performanceclass.requirements;
24*b7c941bbSAndroid Build Coastguard Worker
25*b7c941bbSAndroid Build Coastguard Workerimport "cts/tests/mediapc/requirements/mpc.proto";
26*b7c941bbSAndroid Build Coastguard Worker
27*b7c941bbSAndroid Build Coastguard Workeroption java_multiple_files = true;
28*b7c941bbSAndroid Build Coastguard Worker
29*b7c941bbSAndroid Build Coastguard Workeroption go_package = "cts/test/mediapc/requirements/requirements_go_proto";
30*b7c941bbSAndroid Build Coastguard Worker
31*b7c941bbSAndroid Build Coastguard Worker// A list of requirements.
32*b7c941bbSAndroid Build Coastguard Workermessage RequirementList {
33*b7c941bbSAndroid Build Coastguard Worker  repeated Requirement requirements = 1;
34*b7c941bbSAndroid Build Coastguard Worker  // All valid MPC levels
35*b7c941bbSAndroid Build Coastguard Worker  repeated int64 all_mpcs = 2 [packed = true];
36*b7c941bbSAndroid Build Coastguard Worker}
37*b7c941bbSAndroid Build Coastguard Worker
38*b7c941bbSAndroid Build Coastguard Worker// A Media Performance Class Requirement with required measurements and
39*b7c941bbSAndroid Build Coastguard Worker// specifications including required values for each relevant MPC level.
40*b7c941bbSAndroid Build Coastguard Workermessage Requirement {
41*b7c941bbSAndroid Build Coastguard Worker  // ID exactly as shown in the CDD
42*b7c941bbSAndroid Build Coastguard Worker  optional string id = 1;
43*b7c941bbSAndroid Build Coastguard Worker  // Short human readable name. Must be unique.
44*b7c941bbSAndroid Build Coastguard Worker  optional string name = 2;
45*b7c941bbSAndroid Build Coastguard Worker  optional string description = 3;
46*b7c941bbSAndroid Build Coastguard Worker  optional Group group = 4;
47*b7c941bbSAndroid Build Coastguard Worker
48*b7c941bbSAndroid Build Coastguard Worker  map<int64, RequirementSpec> specs = 5;
49*b7c941bbSAndroid Build Coastguard Worker
50*b7c941bbSAndroid Build Coastguard Worker  // measurement_id to RequiredMeasurements
51*b7c941bbSAndroid Build Coastguard Worker  // The measurement_id is a field name safe string.
52*b7c941bbSAndroid Build Coastguard Worker  map<string, RequiredMeasurement> measurements = 6;
53*b7c941bbSAndroid Build Coastguard Worker
54*b7c941bbSAndroid Build Coastguard Worker  // Whether this requirement is a non-CTS test. Cts tests require fields in the
55*b7c941bbSAndroid Build Coastguard Worker  // test cases proto to be repeated fields. Non-Cts tests need optional fields.
56*b7c941bbSAndroid Build Coastguard Worker  optional bool is_non_cts_test = 7 [default = false];
57*b7c941bbSAndroid Build Coastguard Worker
58*b7c941bbSAndroid Build Coastguard Worker  // Tests may use different setups depending on which performance class(es)
59*b7c941bbSAndroid Build Coastguard Worker  // are being tested. This field specifies a list of identifiers for each
60*b7c941bbSAndroid Build Coastguard Worker  // setup. Each identifier must have at least one corresponding entry in specs.
61*b7c941bbSAndroid Build Coastguard Worker  // The list can just be a single entry of a blank string if only one setup
62*b7c941bbSAndroid Build Coastguard Worker  // exists.
63*b7c941bbSAndroid Build Coastguard Worker  map<string, TestConfig> test_configs = 8;
64*b7c941bbSAndroid Build Coastguard Worker
65*b7c941bbSAndroid Build Coastguard Worker  // variant_id to Variant
66*b7c941bbSAndroid Build Coastguard Worker  //
67*b7c941bbSAndroid Build Coastguard Worker  // The variant_id is a field name safe string.
68*b7c941bbSAndroid Build Coastguard Worker  map<string, Variant> variants = 57;
69*b7c941bbSAndroid Build Coastguard Worker}
70*b7c941bbSAndroid Build Coastguard Worker
71*b7c941bbSAndroid Build Coastguard Workermessage RequirementSpec {
72*b7c941bbSAndroid Build Coastguard Worker  optional android.media.performanceclass.MediaPerformanceClass mpc =
73*b7c941bbSAndroid Build Coastguard Worker      1;
74*b7c941bbSAndroid Build Coastguard Worker  // The specification of the requirement at the given MPC level exactly as
75*b7c941bbSAndroid Build Coastguard Worker  // described in the CDD.
76*b7c941bbSAndroid Build Coastguard Worker  optional string specification = 3;
77*b7c941bbSAndroid Build Coastguard Worker
78*b7c941bbSAndroid Build Coastguard Worker  // measurement_id to RequiredMeasurements
79*b7c941bbSAndroid Build Coastguard Worker  //
80*b7c941bbSAndroid Build Coastguard Worker  // The measurement_id is a field name safe string.
81*b7c941bbSAndroid Build Coastguard Worker  // The measurement_id must match the id of a RequiredMeasurement in the parent
82*b7c941bbSAndroid Build Coastguard Worker  // Requirement.
83*b7c941bbSAndroid Build Coastguard Worker  map<string, RequiredValue> required_values = 4;
84*b7c941bbSAndroid Build Coastguard Worker
85*b7c941bbSAndroid Build Coastguard Worker  // variant_id to VariantSpec
86*b7c941bbSAndroid Build Coastguard Worker  // The variant_id is a field name safe string.
87*b7c941bbSAndroid Build Coastguard Worker  map<string, VariantSpec> variant_specs = 5;
88*b7c941bbSAndroid Build Coastguard Worker
89*b7c941bbSAndroid Build Coastguard Worker  // The test config id to use for this spec. If not specified, defaults to an
90*b7c941bbSAndroid Build Coastguard Worker  // empty string.
91*b7c941bbSAndroid Build Coastguard Worker  optional string test_config_id = 6 [default = ""];
92*b7c941bbSAndroid Build Coastguard Worker}
93*b7c941bbSAndroid Build Coastguard Worker
94*b7c941bbSAndroid Build Coastguard Workerenum Group {
95*b7c941bbSAndroid Build Coastguard Worker  GROUP_UNSPECIFIED = 0;
96*b7c941bbSAndroid Build Coastguard Worker  GROUP_MEDIA = 1;
97*b7c941bbSAndroid Build Coastguard Worker  GROUP_CAMERA = 2;
98*b7c941bbSAndroid Build Coastguard Worker  GROUP_HARDWARE = 3;
99*b7c941bbSAndroid Build Coastguard Worker  GROUP_PERFORMANCE = 4;
100*b7c941bbSAndroid Build Coastguard Worker}
101*b7c941bbSAndroid Build Coastguard Worker
102*b7c941bbSAndroid Build Coastguard Worker// A required measurement needed verifiy a MPC requirement.
103*b7c941bbSAndroid Build Coastguard Workermessage RequiredMeasurement {
104*b7c941bbSAndroid Build Coastguard Worker  // The id is a field name safe string.
105*b7c941bbSAndroid Build Coastguard Worker  optional string id = 1;
106*b7c941bbSAndroid Build Coastguard Worker  optional string description = 2;
107*b7c941bbSAndroid Build Coastguard Worker  optional MeasurementType measurement_type = 3;
108*b7c941bbSAndroid Build Coastguard Worker  optional Comparison comparison = 4;
109*b7c941bbSAndroid Build Coastguard Worker
110*b7c941bbSAndroid Build Coastguard Worker  reserved 5;  // is_test_differentiator
111*b7c941bbSAndroid Build Coastguard Worker
112*b7c941bbSAndroid Build Coastguard Worker  // Must be unique per requirement and greater than or equal to 3.
113*b7c941bbSAndroid Build Coastguard Worker  optional int32 proto_field_number = 6;
114*b7c941bbSAndroid Build Coastguard Worker}
115*b7c941bbSAndroid Build Coastguard Worker
116*b7c941bbSAndroid Build Coastguard Worker// A required value for a RequiredMeasurement at a given MPC level.
117*b7c941bbSAndroid Build Coastguard Workermessage RequiredValue {
118*b7c941bbSAndroid Build Coastguard Worker  // The id is a field name safe string.
119*b7c941bbSAndroid Build Coastguard Worker  optional string id = 1;
120*b7c941bbSAndroid Build Coastguard Worker  reserved 2;  // comparison
121*b7c941bbSAndroid Build Coastguard Worker  oneof value {
122*b7c941bbSAndroid Build Coastguard Worker    string string_value = 3;
123*b7c941bbSAndroid Build Coastguard Worker    int64 int_value = 4;
124*b7c941bbSAndroid Build Coastguard Worker    double double_value = 5;
125*b7c941bbSAndroid Build Coastguard Worker    bool bool_value = 6;
126*b7c941bbSAndroid Build Coastguard Worker    int64 long_value = 7;
127*b7c941bbSAndroid Build Coastguard Worker    float float_value = 8;
128*b7c941bbSAndroid Build Coastguard Worker  }
129*b7c941bbSAndroid Build Coastguard Worker}
130*b7c941bbSAndroid Build Coastguard Worker
131*b7c941bbSAndroid Build Coastguard Worker// Variants are used when an alternative set of required values should apply
132*b7c941bbSAndroid Build Coastguard Workermessage Variant {
133*b7c941bbSAndroid Build Coastguard Worker  // When the variant should be used.
134*b7c941bbSAndroid Build Coastguard Worker  optional string description = 1;
135*b7c941bbSAndroid Build Coastguard Worker}
136*b7c941bbSAndroid Build Coastguard Worker
137*b7c941bbSAndroid Build Coastguard Worker// The set values required for a variant
138*b7c941bbSAndroid Build Coastguard Workermessage VariantSpec {
139*b7c941bbSAndroid Build Coastguard Worker  // measurement_id to RequiredMeasurements
140*b7c941bbSAndroid Build Coastguard Worker  //
141*b7c941bbSAndroid Build Coastguard Worker  // The measurement_id is a field name safe string.
142*b7c941bbSAndroid Build Coastguard Worker  // The measurement_id must match the id of a RequiredMeasurement in the parent
143*b7c941bbSAndroid Build Coastguard Worker  // Requirement.
144*b7c941bbSAndroid Build Coastguard Worker  map<string, RequiredValue> required_values = 4;
145*b7c941bbSAndroid Build Coastguard Worker}
146*b7c941bbSAndroid Build Coastguard Worker
147*b7c941bbSAndroid Build Coastguard Workermessage TestConfig {
148*b7c941bbSAndroid Build Coastguard Worker  reserved 1;  // id
149*b7c941bbSAndroid Build Coastguard Worker  optional string description = 2;
150*b7c941bbSAndroid Build Coastguard Worker  // The proto field number of the test config. Must be unique across all
151*b7c941bbSAndroid Build Coastguard Worker  // requirements.
152*b7c941bbSAndroid Build Coastguard Worker  optional int32 proto_field_number = 3;
153*b7c941bbSAndroid Build Coastguard Worker}
154*b7c941bbSAndroid Build Coastguard Worker
155*b7c941bbSAndroid Build Coastguard Workerenum Comparison {
156*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_UNSPECIFIED = 0;
157*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_EQUAL = 1;
158*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_LESS_THAN = 2;
159*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_LESS_THAN_OR_EQUAL = 3;
160*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_GREATER_THAN = 4;
161*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_GREATER_THAN_OR_EQUAL = 5;
162*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_INFO_ONLY = 6;
163*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_CONFIG = 7;
164*b7c941bbSAndroid Build Coastguard Worker  COMPARISON_CAMERA_HARDWARE_LEVEL_GREATER_THAN_OR_EQUAL = 8;
165*b7c941bbSAndroid Build Coastguard Worker}
166*b7c941bbSAndroid Build Coastguard Worker
167*b7c941bbSAndroid Build Coastguard Workerenum MeasurementType {
168*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_UNSPECIFIED = 0;
169*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_BOOL = 1;
170*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_DOUBLE = 2;
171*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_INT = 3;
172*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_STRING = 4;
173*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_LONG = 5;
174*b7c941bbSAndroid Build Coastguard Worker  MEASUREMENT_TYPE_FLOAT = 6;
175*b7c941bbSAndroid Build Coastguard Worker}
176