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