• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2024 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15# proto-file: wireless/android/mediapc_requirements/requirements.proto
16# proto-message: RequirementList
17all_mpcs: [30, 31, 33, 34, 35]
18requirements {
19  id: "5.1/H-1-1"
20  name: "Video Decoder Instances"
21  description: "Video decoder instances"
22  test_configs: {
23    key: "720p"
24    value: {
25      description: "Tests running at 720p"
26      proto_field_number: 1
27    }
28  }
29  test_configs: {
30    key: "1080p"
31    value: {
32      description: "Tests running at 1080p"
33      proto_field_number: 2
34    }
35  }
36  test_configs: {
37    key: "4k"
38    value: {
39      description: "Tests running at 4k"
40      proto_field_number: 3
41    }
42  }
43  variants: {
44    key: "VP9"
45    value: {
46      description: "When one of the codecs is VP9, variant used in 720p tests"
47    }
48  }
49  variants: {
50    key: "AV1"
51    value: {
52      description: "When one of the codecs is AV1, variant used in 720p tests"
53    }
54  }
55  measurements: {
56    key: "concurrent_sessions"
57    value: {
58      description: "The number of concurrent sessions"
59      measurement_type: MEASUREMENT_TYPE_INT
60      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
61      proto_field_number: 3
62    }
63  }
64  measurements: {
65    key: "resolution"
66    value: {
67      description: "The resolution the test was run at"
68      measurement_type: MEASUREMENT_TYPE_INT
69      comparison: COMPARISON_CONFIG
70      proto_field_number: 4
71    }
72  }
73  specs {
74    key: 30
75    value {
76      mpc: MEDIA_PERFORMANCE_CLASS_11
77      specification: "MUST advertise the maximum number of hardware video decoder sessions that can be run concurrently in any codec combination via the CodecCapabilities.getMaxSupportedInstances() and VideoCapabilities.getSupportedPerformancePoints() methods."
78      test_config_id: "720p"
79      required_values: {
80        key: "concurrent_sessions"
81        value {
82          int_value: 6
83        }
84      }
85      required_values: {
86        key: "resolution"
87        value {
88          int_value: 720
89        }
90      }
91      variant_specs: {
92        key: "VP9"
93        value: {
94          required_values: {
95            key: "resolution"
96            value {
97              int_value: 720
98            }
99          }
100        }
101      }
102      variant_specs: {
103        key: "AV1"
104        value: {
105          required_values: {
106            key: "resolution"
107            value {
108              int_value: 720
109            }
110          }
111        }
112      }
113    }
114  }
115  specs {
116    key: 31
117    value {
118      mpc: MEDIA_PERFORMANCE_CLASS_12
119      specification: "same"
120      test_config_id: "720p"
121      required_values: {
122        key: "concurrent_sessions"
123        value {
124          int_value: 6
125        }
126      }
127      required_values: {
128        key: "resolution"
129        value {
130          int_value: 720
131        }
132      }
133      variant_specs: {
134        key: "VP9"
135        value: {
136          required_values: {
137            key: "concurrent_sessions"
138            value {
139              int_value: 2
140            }
141          }
142          required_values: {
143            key: "resolution"
144            value {
145              int_value: 720
146            }
147          }
148        }
149      }
150      variant_specs: {
151        key: "AV1"
152        value: {
153          required_values: {
154            key: "concurrent_sessions"
155            value {
156              int_value: 6
157            }
158          }
159          required_values: {
160            key: "resolution"
161            value {
162              int_value: 720
163            }
164          }
165        }
166      }
167    }
168  }
169  specs {
170    key: 33
171    value {
172      mpc: MEDIA_PERFORMANCE_CLASS_13
173      specification: "same"
174      test_config_id: "1080p"
175      required_values: {
176        key: "concurrent_sessions"
177        value {
178          int_value: 6
179        }
180      }
181      required_values: {
182        key: "resolution"
183        value {
184          int_value: 1080
185        }
186      }
187    }
188  }
189  specs {
190    key: 34
191    value {
192      mpc: MEDIA_PERFORMANCE_CLASS_14
193      specification: "same"
194      test_config_id: "4k"
195      required_values: {
196        key: "concurrent_sessions"
197        value {
198          int_value: 6
199        }
200      }
201      required_values: {
202        key: "resolution"
203        value {
204          int_value: 2160
205        }
206      }
207    }
208  }
209  specs {
210    key: 35
211    value {
212      mpc: MEDIA_PERFORMANCE_CLASS_15
213      specification: "same"
214      test_config_id: "4k"
215      required_values: {
216        key: "concurrent_sessions"
217        value {
218          int_value: 6
219        }
220      }
221      required_values: {
222        key: "resolution"
223        value {
224          int_value: 2160
225        }
226      }
227    }
228  }
229}
230requirements {
231  id: "5.1/H-1-2"
232  name: "Concurrent Video Decoder Sessions"
233  description: "Concurrent video decoder sessions"
234  test_configs: {
235    key: "720p"
236    value: {
237      description: "Tests running at 720p"
238      proto_field_number: 4
239    }
240  }
241  test_configs: {
242    key: "1080p"
243    value: {
244      description: "Tests running at 1080p"
245      proto_field_number: 5
246    }
247  }
248  test_configs: {
249    key: "4k"
250    value: {
251      description: "Tests running at 4k"
252      proto_field_number: 6
253    }
254  }
255  variants: {
256    key: "VP9"
257    value: {
258      description: "When one of the codecs is VP9, variant used in 720p tests"
259    }
260  }
261  variants: {
262    key: "AV1"
263    value: {
264      description: "When one of the codecs is AV1, variant used in 720p tests"
265    }
266  }
267  measurements: {
268    key: "concurrent_fps"
269    value: {
270      description: "The number of frames per second that can be decoded concurrently"
271      measurement_type: MEASUREMENT_TYPE_DOUBLE
272      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
273      proto_field_number: 3
274    }
275  }
276  measurements: {
277    key: "frame_drops_per_sec"
278    value: {
279      description: "The number of frames dropped per second"
280      measurement_type: MEASUREMENT_TYPE_DOUBLE
281      comparison: COMPARISON_LESS_THAN_OR_EQUAL
282      proto_field_number: 4
283    }
284  }
285  measurements: {
286    key: "resolution"
287    value: {
288      description: "The resolution the test was run at"
289      measurement_type: MEASUREMENT_TYPE_INT
290      comparison: COMPARISON_CONFIG
291      proto_field_number: 5
292    }
293  }
294  specs {
295    key: 30
296    value {
297      mpc: MEDIA_PERFORMANCE_CLASS_11
298      specification: "MUST support 6 instances of hardware video decoder sessions (AVC or HEVC) in any codec combination running concurrently at 720p resolution@30 fps."
299      test_config_id: "720p"
300      required_values: {
301        key: "concurrent_fps"
302        value {
303          double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
304        }
305      }
306      required_values: {
307        key: "resolution"
308        value {
309          int_value: 720
310        }
311      }
312      variant_specs: {
313        key: "VP9"
314        value: {
315          required_values: {
316            key: "resolution"
317            value {
318              int_value: 720
319            }
320          }
321        }
322      }
323      variant_specs: {
324        key: "AV1"
325        value: {
326          required_values: {
327            key: "resolution"
328            value {
329              int_value: 720
330            }
331          }
332        }
333      }
334    }
335  }
336  specs {
337    key: 31
338    value {
339      mpc: MEDIA_PERFORMANCE_CLASS_12
340      specification: "MUST support 6 instances of hardware video decoder sessions (AVC, HEVC, VP9* or later) in any codec combination running concurrently at 720p resolution@30 fps. *Only 2 instances are required if VP9 codec is present."
341      test_config_id: "720p"
342      required_values: {
343        key: "concurrent_fps"
344        value {
345          double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
346        }
347      }
348      required_values: {
349        key: "resolution"
350        value {
351          int_value: 720
352        }
353      }
354      variant_specs: {
355        key: "VP9"
356        value: {
357          required_values: {
358            key: "concurrent_fps"
359            value {
360              double_value: 57  # 2 decoders * 30 fps * 0.95 tolerance factor
361            }
362          }
363          required_values: {
364            key: "resolution"
365            value {
366              int_value: 720
367            }
368          }
369        }
370      }
371      variant_specs: {
372        key: "AV1"
373        value: {
374          required_values: {
375            key: "concurrent_fps"
376            value {
377              double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
378            }
379          }
380          required_values: {
381            key: "resolution"
382            value {
383              int_value: 720
384            }
385          }
386        }
387      }
388    }
389  }
390  specs {
391    key: 33
392    value {
393      mpc: MEDIA_PERFORMANCE_CLASS_13
394      specification: "MUST support 6 instances of hardware video decoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently at 1080p resolution@30 fps."
395      test_config_id: "1080p"
396      required_values: {
397        key: "concurrent_fps"
398        value {
399          double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
400        }
401      }
402      required_values: {
403        key: "resolution"
404        value {
405          int_value: 1080
406        }
407      }
408    }
409  }
410  specs {
411    key: 34
412    value {
413      mpc: MEDIA_PERFORMANCE_CLASS_14
414      specification: "MUST support 6 instances of 8-bit (SDR) hardware video decoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently with 3 sessions at 1080p resolution@30 fps and 3 sessions at 4k resolution@30fps, unless AV1. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
415      test_config_id: "4k"
416      required_values: {
417        key: "concurrent_fps"
418        value {
419          double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
420        }
421      }
422      required_values: {
423        key: "resolution"
424        value {
425          int_value: 2160
426        }
427      }
428    }
429  }
430  specs {
431    key: 35
432    value {
433      mpc: MEDIA_PERFORMANCE_CLASS_15
434      specification: "MUST support 6 instances of 8-bit (SDR) hardware video decoder sessions (AVC, HEVC, VP9, AV1, or later) in any codec combination running concurrently with 3 sessions at 1080p resolution@30 fps and 3 sessions at 4k resolution@30fps, unless AV1. For all sessions, there MUST NOT be more than 1 frame dropped per second. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
435      test_config_id: "4k"
436      required_values: {
437        key: "concurrent_fps"
438        value {
439          double_value: 171  # 6 decoders * 30 fps * 0.95 tolerance factor
440        }
441      }
442      required_values: {
443        key: "frame_drops_per_sec"
444        value {
445          double_value: 1
446        }
447      }
448      required_values: {
449        key: "resolution"
450        value {
451          int_value: 2160
452        }
453      }
454    }
455  }
456}
457requirements {
458  id: "5.1/H-1-3"
459  name: "Video Encoder Instances"
460  description: "Video encoder instances"
461  test_configs: {
462    key: "720p"
463    value: {
464      description: "Tests running at 720p"
465      proto_field_number: 7
466    }
467  }
468  test_configs: {
469    key: "1080p"
470    value: {
471      description: "Tests running at 1080p"
472      proto_field_number: 8
473    }
474  }
475  test_configs: {
476    key: "4k"
477    value: {
478      description: "Tests running at 4k"
479      proto_field_number: 9
480    }
481  }
482  variants: {
483    key: "VP9"
484    value: {
485      description: "When one of the codecs is VP9, variant used in 720p tests"
486    }
487  }
488  variants: {
489    key: "AV1"
490    value: {
491      description: "When one of the codecs is AV1, variant used in 720p tests"
492    }
493  }
494  measurements: {
495    key: "concurrent_sessions"
496    value: {
497      description: "The number of concurrent sessions"
498      measurement_type: MEASUREMENT_TYPE_INT
499      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
500      proto_field_number: 3
501    }
502  }
503  measurements: {
504    key: "resolution"
505    value: {
506      description: "The resolution the test was run at"
507      measurement_type: MEASUREMENT_TYPE_INT
508      comparison: COMPARISON_CONFIG
509      proto_field_number: 4
510    }
511  }
512  specs {
513    key: 30
514    value {
515      mpc: MEDIA_PERFORMANCE_CLASS_11
516      specification: "MUST advertise the maximum number of hardware video encoder sessions that can be run concurrently in any codec combination via the CodecCapabilities.getMaxSupportedInstances() and VideoCapabilities.getSupportedPerformancePoints() methods."
517      test_config_id: "720p"
518      required_values: {
519        key: "concurrent_sessions"
520        value {
521          int_value: 6
522        }
523      }
524      required_values: {
525        key: "resolution"
526        value {
527          int_value: 720
528        }
529      }
530      variant_specs: {
531        key: "VP9"
532        value: {
533          required_values: {
534            key: "resolution"
535            value {
536              int_value: 720
537            }
538          }
539        }
540      }
541      variant_specs: {
542        key: "AV1"
543        value: {
544          required_values: {
545            key: "resolution"
546            value {
547              int_value: 720
548            }
549          }
550        }
551      }
552    }
553  }
554  specs {
555    key: 31
556    value {
557      mpc: MEDIA_PERFORMANCE_CLASS_12
558      specification: "same"
559      test_config_id: "720p"
560      required_values: {
561        key: "concurrent_sessions"
562        value {
563          int_value: 6
564        }
565      }
566      required_values: {
567        key: "resolution"
568        value {
569          int_value: 720
570        }
571      }
572      variant_specs: {
573        key: "VP9"
574        value: {
575          required_values: {
576            key: "concurrent_sessions"
577            value {
578              int_value: 2
579            }
580          }
581          required_values: {
582            key: "resolution"
583            value {
584              int_value: 720
585            }
586          }
587        }
588      }
589      variant_specs: {
590        key: "AV1"
591        value: {
592          required_values: {
593            key: "concurrent_sessions"
594            value {
595              int_value: 6
596            }
597          }
598          required_values: {
599            key: "resolution"
600            value {
601              int_value: 720
602            }
603          }
604        }
605      }
606    }
607  }
608  specs {
609    key: 33
610    value {
611      mpc: MEDIA_PERFORMANCE_CLASS_13
612      specification: "same"
613      test_config_id: "1080p"
614      required_values: {
615        key: "concurrent_sessions"
616        value {
617          int_value: 6
618        }
619      }
620      required_values: {
621        key: "resolution"
622        value {
623          int_value: 1080
624        }
625      }
626    }
627  }
628  specs {
629    key: 34
630    value {
631      mpc: MEDIA_PERFORMANCE_CLASS_14
632      specification: "same"
633      test_config_id: "4k"
634      required_values: {
635        key: "concurrent_sessions"
636        value {
637          int_value: 6
638        }
639      }
640      required_values: {
641        key: "resolution"
642        value {
643          int_value: 2160
644        }
645      }
646    }
647  }
648  specs {
649    key: 35
650    value {
651      mpc: MEDIA_PERFORMANCE_CLASS_15
652      specification: "same"
653      test_config_id: "4k"
654      required_values: {
655        key: "concurrent_sessions"
656        value {
657          int_value: 6
658        }
659      }
660      required_values: {
661        key: "resolution"
662        value {
663          int_value: 2160
664        }
665      }
666    }
667  }
668}
669requirements {
670  id: "5.1/H-1-4"
671  name: "Concurrent Video Encoder Sessions"
672  description: "Concurrent video encoder sessions"
673  test_configs: {
674    key: "720p"
675    value: {
676      description: "Tests running at 720p"
677      proto_field_number: 10
678    }
679  }
680  test_configs: {
681    key: "1080p"
682    value: {
683      description: "Tests running at 1080p"
684      proto_field_number: 11
685    }
686  }
687  test_configs: {
688    key: "4k"
689    value: {
690      description: "Tests running at 4k"
691      proto_field_number: 12
692    }
693  }
694  variants: {
695    key: "byte_buffer_mode"
696    value: {
697      description: "When the test is run in byte buffer mode"
698    }
699  }
700  measurements: {
701    key: "concurrent_fps"
702    value: {
703      description: "The number of frames per second that can be decoded concurrently"
704      measurement_type: MEASUREMENT_TYPE_DOUBLE
705      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
706      proto_field_number: 3
707    }
708  }
709  measurements: {
710    key: "frame_drops_per_sec"
711    value: {
712      description: "The number of frames dropped per second"
713      measurement_type: MEASUREMENT_TYPE_DOUBLE
714      comparison: COMPARISON_LESS_THAN_OR_EQUAL
715      proto_field_number: 4
716    }
717  }
718  measurements: {
719    key: "resolution"
720    value: {
721      description: "The resolution the test was run at"
722      measurement_type: MEASUREMENT_TYPE_INT
723      comparison: COMPARISON_CONFIG
724      proto_field_number: 5
725    }
726  }
727  specs {
728    key: 30
729    value {
730      mpc: MEDIA_PERFORMANCE_CLASS_11
731      specification: "MUST support 6 instances of hardware video encoder sessions (AVC or HEVC) in any codec combination running concurrently at 720p resolution@30 fps."
732      test_config_id: "720p"
733      required_values: {
734        key: "concurrent_fps"
735        value {
736          double_value: 171  # 6 encoders * 30 fps * 0.95 tolerance factor
737        }
738      }
739      required_values: {
740        key: "resolution"
741        value {
742          int_value: 720
743        }
744      }
745      variant_specs: {
746        key: "byte_buffer_mode"
747        value: {
748          required_values: {
749            key: "concurrent_fps"
750            value {
751              double_value: 0  # Requirement not asserted in byte buffer mode
752            }
753          }
754          required_values: {
755            key: "resolution"
756            value {
757              int_value: 720
758            }
759          }
760        }
761      }
762    }
763  }
764  specs {
765    key: 31
766    value {
767      mpc: MEDIA_PERFORMANCE_CLASS_12
768      specification: "MUST support 6 instances of hardware video encoder sessions (AVC, HEVC, VP9* or later) in any codec combination running concurrently at 720p resolution@30 fps. *Only 2 instances are required if VP9 codec is present."
769      test_config_id: "720p"
770      required_values: {
771        key: "concurrent_fps"
772        value {
773          double_value: 171  # 6 encoders * 30 fps * 0.95 tolerance factor
774        }
775      }
776      required_values: {
777        key: "resolution"
778        value {
779          int_value: 720
780        }
781      }
782      variant_specs: {
783        key: "byte_buffer_mode"
784        value: {
785          required_values: {
786            key: "concurrent_fps"
787            value {
788              double_value: 0  # Requirement not asserted in byte buffer mode
789            }
790          }
791          required_values: {
792            key: "resolution"
793            value {
794              int_value: 720
795            }
796          }
797        }
798      }
799    }
800  }
801  specs {
802    key: 33
803    value {
804      mpc: MEDIA_PERFORMANCE_CLASS_13
805      specification: "MUST support 6 instances of hardware video encoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently at 1080p resolution@30fps."
806      test_config_id: "1080p"
807      required_values: {
808        key: "concurrent_fps"
809        value {
810          double_value: 171  # 6 encoders * 30 fps * 0.95 tolerance factor
811        }
812      }
813      required_values: {
814        key: "resolution"
815        value {
816          int_value: 1080
817        }
818      }
819      variant_specs: {
820        key: "byte_buffer_mode"
821        value: {
822          required_values: {
823            key: "concurrent_fps"
824            value {
825              double_value: 0  # Requirement not asserted in byte buffer mode
826            }
827          }
828          required_values: {
829            key: "resolution"
830            value {
831              int_value: 1080
832            }
833          }
834        }
835      }
836    }
837  }
838  specs {
839    key: 34
840    value {
841      mpc: MEDIA_PERFORMANCE_CLASS_14
842      specification: "MUST support 6 instances of 8-bit (SDR) hardware video encoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently with 4 sessions at 1080p resolution@30 fps and 2 sessions at 4k resolution@30fps, unless AV1. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
843      test_config_id: "4k"
844      required_values: {
845        key: "concurrent_fps"
846        value {
847          double_value: 171  # 6 encoders * 30 fps * 0.95 tolerance factor
848        }
849      }
850      required_values: {
851        key: "resolution"
852        value {
853          int_value: 2160
854        }
855      }
856      variant_specs: {
857        key: "byte_buffer_mode"
858        value: {
859          required_values: {
860            key: "concurrent_fps"
861            value {
862              double_value: 0  # Requirement not asserted in byte buffer mode
863            }
864          }
865          required_values: {
866            key: "resolution"
867            value {
868              int_value: 2160
869            }
870          }
871        }
872      }
873    }
874  }
875  specs {
876    key: 35
877    value {
878      mpc: MEDIA_PERFORMANCE_CLASS_15
879      specification: "MUST support 6 instances of 8-bit (SDR) hardware video encoder sessions (AVC, HEVC, VP9, AV1, or later) in any codec combination running concurrently with 4 sessions at 1080p resolution@30 fps and 2 sessions at 4k resolution@30fps, unless AV1. For all sessions, there MUST NOT be more than 1 frame dropped per second. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
880      test_config_id: "4k"
881      required_values: {
882        key: "concurrent_fps"
883        value {
884          double_value: 171  # 6 encoders * 30 fps * 0.95 tolerance factor
885        }
886      }
887      required_values: {
888        key: "frame_drops_per_sec"
889        value {
890          double_value: 1
891        }
892      }
893      required_values: {
894        key: "resolution"
895        value {
896          int_value: 2160
897        }
898      }
899      variant_specs: {
900        key: "byte_buffer_mode"
901        value: {
902          required_values: {
903            key: "concurrent_fps"
904            value {
905              double_value: 0  # Requirement not asserted in byte buffer mode
906            }
907          }
908          required_values: {
909            key: "frame_drops_per_sec"
910            value {
911              double_value: 1
912            }
913          }
914          required_values: {
915            key: "resolution"
916            value: {
917              int_value: 2160
918            }
919          }
920        }
921      }
922    }
923  }
924}
925requirements {
926  id: "5.1/H-1-5"
927  name: "Video Transcoding Instances"
928  description: "Video transcoding instances"
929  test_configs: {
930    key: "720p"
931    value: {
932      description: "Tests running at 720p"
933      proto_field_number: 13
934    }
935  }
936  test_configs: {
937    key: "1080p"
938    value: {
939      description: "Tests running at 1080p"
940      proto_field_number: 14
941    }
942  }
943  test_configs: {
944    key: "4k"
945    value: {
946      description: "Tests running at 4k"
947      proto_field_number: 15
948    }
949  }
950  variants: {
951    key: "VP9"
952    value: {
953      description: "When one of the codecs is VP9, variant used in 720p tests"
954    }
955  }
956  variants: {
957    key: "AV1"
958    value: {
959      description: "When one of the codecs is AV1, variant used in 720p tests"
960    }
961  }
962  measurements: {
963    key: "concurrent_sessions"
964    value: {
965      description: "The number of concurrent sessions"
966      measurement_type: MEASUREMENT_TYPE_INT
967      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
968      proto_field_number: 3
969    }
970  }
971  measurements: {
972    key: "resolution"
973    value: {
974      description: "The resolution the test was run at"
975      measurement_type: MEASUREMENT_TYPE_INT
976      comparison: COMPARISON_CONFIG
977      proto_field_number: 4
978    }
979  }
980  specs {
981    key: 30
982    value {
983      mpc: MEDIA_PERFORMANCE_CLASS_11
984      specification: "MUST advertise the maximum number of hardware video encoder and decoder sessions that can be run concurrently in any codec combination via the CodecCapabilities.getMaxSupportedInstances() and VideoCapabilities.getSupportedPerformancePoints() methods."
985      test_config_id: "720p"
986      required_values: {
987        key: "concurrent_sessions"
988        value {
989          int_value: 6
990        }
991      }
992      required_values: {
993        key: "resolution"
994        value {
995          int_value: 720
996        }
997      }
998      variant_specs: {
999        key: "VP9"
1000        value: {
1001          required_values: {
1002            key: "resolution"
1003            value {
1004              int_value: 720
1005            }
1006          }
1007        }
1008      }
1009      variant_specs: {
1010        key: "AV1"
1011        value: {
1012          required_values: {
1013            key: "resolution"
1014            value {
1015              int_value: 720
1016            }
1017          }
1018        }
1019      }
1020    }
1021  }
1022  specs {
1023    key: 31
1024    value {
1025      mpc: MEDIA_PERFORMANCE_CLASS_12
1026      specification: "same"
1027      test_config_id: "720p"
1028      required_values: {
1029        key: "concurrent_sessions"
1030        value {
1031          int_value: 6
1032        }
1033      }
1034      required_values: {
1035        key: "resolution"
1036        value {
1037          int_value: 720
1038        }
1039      }
1040      variant_specs: {
1041        key: "VP9"
1042        value: {
1043          required_values: {
1044            key: "concurrent_sessions"
1045            value {
1046              int_value: 2
1047            }
1048          }
1049          required_values: {
1050            key: "resolution"
1051            value {
1052              int_value: 720
1053            }
1054          }
1055        }
1056      }
1057      variant_specs: {
1058        key: "AV1"
1059        value: {
1060          required_values: {
1061            key: "concurrent_sessions"
1062            value {
1063              int_value: 6
1064            }
1065          }
1066          required_values: {
1067            key: "resolution"
1068            value {
1069              int_value: 720
1070            }
1071          }
1072        }
1073      }
1074    }
1075  }
1076  specs {
1077    key: 33
1078    value {
1079      mpc: MEDIA_PERFORMANCE_CLASS_13
1080      specification: "same"
1081      test_config_id: "1080p"
1082      required_values: {
1083        key: "concurrent_sessions"
1084        value {
1085          int_value: 6
1086        }
1087      }
1088      required_values: {
1089        key: "resolution"
1090        value {
1091          int_value: 1080
1092        }
1093      }
1094    }
1095  }
1096  specs {
1097    key: 34
1098    value {
1099      mpc: MEDIA_PERFORMANCE_CLASS_14
1100      specification: "same"
1101      test_config_id: "4k"
1102      required_values: {
1103        key: "concurrent_sessions"
1104        value {
1105          int_value: 6
1106        }
1107      }
1108      required_values: {
1109        key: "resolution"
1110        value {
1111          int_value: 2160
1112        }
1113      }
1114    }
1115  }
1116  specs {
1117    key: 35
1118    value {
1119      mpc: MEDIA_PERFORMANCE_CLASS_15
1120      specification: "same"
1121      test_config_id: "4k"
1122      required_values: {
1123        key: "concurrent_sessions"
1124        value {
1125          int_value: 6
1126        }
1127      }
1128      required_values: {
1129        key: "resolution"
1130        value {
1131          int_value: 2160
1132        }
1133      }
1134    }
1135  }
1136}
1137requirements {
1138  id: "5.1/H-1-6"
1139  name: "Concurrent Video Transcoding Sessions"
1140  description: "Concurrent video transcoding sessions"
1141  test_configs: {
1142    key: "720p"
1143    value: {
1144      description: "Tests running at 720p"
1145      proto_field_number: 16
1146    }
1147  }
1148  test_configs: {
1149    key: "1080p"
1150    value: {
1151      description: "Tests running at 1080p"
1152      proto_field_number: 17
1153    }
1154  }
1155  test_configs: {
1156    key: "4k"
1157    value: {
1158      description: "Tests running at 4k"
1159      proto_field_number: 18
1160    }
1161  }
1162  variants: {
1163    key: "VP9"
1164    value: {
1165      description: "When one of the codecs is VP9, variant used in 720p tests"
1166    }
1167  }
1168  variants: {
1169    key: "AV1"
1170    value: {
1171      description: "When one of the codecs is AV1, variant used in 720p tests"
1172    }
1173  }
1174  measurements: {
1175    key: "concurrent_fps"
1176    value: {
1177      description: "The number of frames per second that can be decoded concurrently"
1178      measurement_type: MEASUREMENT_TYPE_DOUBLE
1179      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
1180      proto_field_number: 3
1181    }
1182  }
1183  measurements: {
1184    key: "frame_drops_per_sec"
1185    value: {
1186      description: "The number of frames dropped per second"
1187      measurement_type: MEASUREMENT_TYPE_DOUBLE
1188      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1189      proto_field_number: 4
1190    }
1191  }
1192  measurements: {
1193    key: "resolution"
1194    value: {
1195      description: "The resolution the test was run at"
1196      measurement_type: MEASUREMENT_TYPE_INT
1197      comparison: COMPARISON_CONFIG
1198      proto_field_number: 5
1199    }
1200  }
1201  specs {
1202    key: 30
1203    value {
1204      mpc: MEDIA_PERFORMANCE_CLASS_11
1205      specification: "MUST support 6 instances of hardware video decoder and hardware video encoder sessions (AVC or HEVC) in any codec combination running concurrently at 720p@30 fps resolution."
1206      test_config_id: "720p"
1207      required_values: {
1208        key: "concurrent_fps"
1209        value {
1210          double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1211        }
1212      }
1213      required_values: {
1214        key: "resolution"
1215        value {
1216          int_value: 720
1217        }
1218      }
1219      variant_specs: {
1220        key: "VP9"
1221        value: {
1222          required_values: {
1223            key: "resolution"
1224            value {
1225              int_value: 720
1226            }
1227          }
1228        }
1229      }
1230      variant_specs: {
1231        key: "AV1"
1232        value: {
1233          required_values: {
1234            key: "resolution"
1235            value {
1236              int_value: 720
1237            }
1238          }
1239        }
1240      }
1241    }
1242  }
1243  specs {
1244    key: 31
1245    value {
1246      mpc: MEDIA_PERFORMANCE_CLASS_12
1247      specification: "MUST support 6 instances of hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9* or later) in any codec combination running concurrently at 720p@30fps resolution. *Only 2 instances are required if VP9 codec is present."
1248      test_config_id: "720p"
1249      required_values: {
1250        key: "concurrent_fps"
1251        value {
1252          double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1253        }
1254      }
1255      required_values: {
1256        key: "resolution"
1257        value {
1258          int_value: 720
1259        }
1260      }
1261      variant_specs: {
1262        key: "VP9"
1263        value: {
1264          required_values: {
1265            key: "concurrent_fps"
1266            value {
1267              double_value: 28.5  # 2 codecs * 30 fps * 0.95 tolerance factor / 2
1268            }
1269          }
1270          required_values: {
1271            key: "resolution"
1272            value {
1273              int_value: 720
1274            }
1275          }
1276        }
1277      }
1278      variant_specs: {
1279        key: "AV1"
1280        value: {
1281          required_values: {
1282            key: "concurrent_fps"
1283            value {
1284              double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1285            }
1286          }
1287          required_values: {
1288            key: "resolution"
1289            value {
1290              int_value: 720
1291            }
1292          }
1293        }
1294      }
1295    }
1296  }
1297  specs {
1298    key: 33
1299    value {
1300      mpc: MEDIA_PERFORMANCE_CLASS_13
1301      specification: "MUST support 6 instances of hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently at 1080p@30fps resolution."
1302      test_config_id: "1080p"
1303      required_values: {
1304        key: "concurrent_fps"
1305        value {
1306          double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1307        }
1308      }
1309      required_values: {
1310        key: "resolution"
1311        value {
1312          int_value: 1080
1313        }
1314      }
1315    }
1316  }
1317  specs {
1318    key: 34
1319    value {
1320      mpc: MEDIA_PERFORMANCE_CLASS_14
1321      specification: "MUST support 6 instances of 8-bit (SDR) hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently with 3 sessions at 4K@30fps resolution (unless AV1), out of which at most 2 are encoder sessions and 3 sessions at 1080p resolution. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
1322      test_config_id: "4k"
1323      required_values: {
1324        key: "concurrent_fps"
1325        value {
1326          double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1327        }
1328      }
1329      required_values: {
1330        key: "resolution"
1331        value {
1332          int_value: 2160
1333        }
1334      }
1335    }
1336  }
1337  specs {
1338    key: 35
1339    value {
1340      mpc: MEDIA_PERFORMANCE_CLASS_15
1341      specification: "MUST support 6 instances of 8-bit (SDR) hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1, or later) in any codec combination running concurrently with 3 sessions at 4K@30fps resolution (unless AV1), out of which at most 2 are encoder sessions and 3 sessions at 1080p resolution. For all sessions, there MUST NOT be more than 1 frame dropped per second. AV1 codecs are only required to support 1080p resolution, but are still required to support 6 instances at 1080p30fps."
1342      test_config_id: "4k"
1343      required_values: {
1344        key: "concurrent_fps"
1345        value {
1346          double_value: 85.5  # 6 codecs * 30 fps * 0.95 tolerance factor / 2
1347        }
1348      }
1349      required_values: {
1350        key: "frame_drops_per_sec"
1351        value {
1352          double_value: 1
1353        }
1354      }
1355      required_values: {
1356        key: "resolution"
1357        value {
1358          int_value: 2160
1359        }
1360      }
1361    }
1362  }
1363}
1364requirements {
1365  id: "5.1/H-1-7"
1366  name: "Video encoder init latency"
1367  description:
1368    "Maximum codec initialization latency for a 1080p or smaller video "
1369    "encoding session for all hardware video encoders when under load."
1370  test_configs: {
1371    key: ""
1372    value: {
1373      proto_field_number: 19
1374    }
1375  }
1376  measurements: {
1377    key: "codec_initialization_latency_ms"
1378    value: {
1379      description: "Codec initialization latency in milliseconds"
1380      measurement_type: MEASUREMENT_TYPE_LONG
1381      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1382      proto_field_number: 3
1383    }
1384  }
1385  variants: {
1386    key: "dolby"
1387    value: {
1388      description: "When the codec is Dolby Vision"
1389    }
1390  }
1391  specs {
1392    key: 30
1393    value {
1394      mpc: MEDIA_PERFORMANCE_CLASS_11
1395      specification:
1396        "MUST have a codec initialization latency of 65 ms or less for a 1080p "
1397        "or smaller video encoding session for all hardware video encoders when "
1398        "under load. Load here is defined as a concurrent 1080p to 720p "
1399        "video-only transcoding session using hardware video codecs together "
1400        "with the 1080p audio-video recording initialization."
1401      required_values: {
1402        key: "codec_initialization_latency_ms"
1403        value {
1404          long_value: 65
1405        }
1406      }
1407      variant_specs: {
1408        key: "dolby"
1409        value: {
1410          required_values: {
1411            key: "codec_initialization_latency_ms"
1412            value {
1413              long_value: 65
1414            }
1415          }
1416        }
1417      }
1418    }
1419  }
1420  specs {
1421    key: 31
1422    value {
1423      mpc: MEDIA_PERFORMANCE_CLASS_12
1424      specification:
1425        "MUST have a codec initialization latency of 50 ms or less for a 1080p "
1426        "or smaller video encoding session for all hardware video encoders "
1427        "when under load. Load here is defined as a concurrent 1080p to 720p "
1428        "video-only transcoding session using hardware video codecs together "
1429        "with the 1080p audio-video recording initialization."
1430      required_values: {
1431        key: "codec_initialization_latency_ms"
1432        value {
1433          long_value: 50
1434        }
1435      }
1436      variant_specs: {
1437        key: "dolby"
1438        value: {
1439          required_values: {
1440            key: "codec_initialization_latency_ms"
1441            value {
1442              long_value: 50
1443            }
1444          }
1445        }
1446      }
1447    }
1448  }
1449  specs {
1450    key: 33
1451    value {
1452      mpc: MEDIA_PERFORMANCE_CLASS_13
1453      specification:
1454        "MUST have a codec initialization latency of 40 ms or less for a 1080p "
1455        "or smaller video encoding session for all hardware video encoders "
1456        "when under load. Load here is defined as a concurrent 1080p to 720p "
1457        "video-only transcoding session using hardware video codecs together "
1458        "with the 1080p audio-video recording initialization."
1459      required_values: {
1460        key: "codec_initialization_latency_ms"
1461        value {
1462          long_value: 40
1463        }
1464      }
1465      variant_specs: {
1466        key: "dolby"
1467        value: {
1468          required_values: {
1469            key: "codec_initialization_latency_ms"
1470            value {
1471              long_value: 50
1472            }
1473          }
1474        }
1475      }
1476    }
1477  }
1478  specs {
1479    key: 34
1480    value {
1481      mpc: MEDIA_PERFORMANCE_CLASS_14
1482      specification:
1483        "MUST have a codec initialization latency of 40 ms or less for a 1080p "
1484        "or smaller video encoding session for all hardware video encoders "
1485        "when under load. Load here is defined as a concurrent 1080p to 720p "
1486        "video-only transcoding session using hardware video codecs together "
1487        "with the 1080p audio-video recording initialization. For Dolby vision "
1488        "codec, the codec initialization latency MUST be 50 ms or less."
1489      required_values: {
1490        key: "codec_initialization_latency_ms"
1491        value {
1492          long_value: 40
1493        }
1494      }
1495      variant_specs: {
1496        key: "dolby"
1497        value: {
1498          required_values: {
1499            key: "codec_initialization_latency_ms"
1500            value {
1501              long_value: 50
1502            }
1503          }
1504        }
1505      }
1506    }
1507  }
1508  specs {
1509    key: 35
1510    value {
1511      mpc: MEDIA_PERFORMANCE_CLASS_15
1512      specification:
1513        "MUST have a codec initialization latency of 40 ms or less for a 1080p "
1514        "or smaller video encoding session for all hardware video encoders "
1515        "when under load. Load here is defined as a concurrent 1080p to 720p "
1516        "video-only transcoding session using hardware video codecs together "
1517        "with the 1080p audio-video recording initialization. For Dolby vision "
1518        "codec, the codec initialization latency MUST be 50 ms or less."
1519      required_values: {
1520        key: "codec_initialization_latency_ms"
1521        value {
1522          long_value: 40
1523        }
1524      }
1525      variant_specs: {
1526        key: "dolby"
1527        value: {
1528          required_values: {
1529            key: "codec_initialization_latency_ms"
1530            value {
1531              long_value: 50
1532            }
1533          }
1534        }
1535      }
1536    }
1537  }
1538}
1539requirements {
1540  id: "5.1/H-1-8"
1541  name: "Audio encoder init latency"
1542  description: "Maximum codec initialization latency for a 128 kbps or lower bitrate audio encoding session for all audio encoders when under load."
1543  test_configs: {
1544    key: ""
1545    value: {
1546      proto_field_number: 20
1547    }
1548  }
1549  measurements: {
1550    key: "codec_initialization_latency_ms"
1551    value: {
1552      description: "Codec initialization latency in milliseconds"
1553      measurement_type: MEASUREMENT_TYPE_LONG
1554      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1555      proto_field_number: 3
1556    }
1557  }
1558  specs: {
1559    key: 30
1560    value {
1561      mpc: MEDIA_PERFORMANCE_CLASS_11
1562      specification: "MUST have a codec initialization latency of 50 ms or less for a 128 kbps or lower bitrate audio encoding session for all audio encoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video recording initialization."
1563      required_values: {
1564        key: "codec_initialization_latency_ms"
1565        value {
1566          long_value: 50
1567        }
1568      }
1569    }
1570  }
1571  specs: {
1572    key: 31
1573    value {
1574      mpc: MEDIA_PERFORMANCE_CLASS_12
1575      specification: "MUST have a codec initialization latency of 40 ms or less for a 128 kbps or lower bitrate audio encoding session for all audio encoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video recording initialization."
1576      required_values: {
1577        key: "codec_initialization_latency_ms"
1578        value {
1579          long_value: 40
1580        }
1581      }
1582    }
1583  }
1584  specs: {
1585    key: 33
1586    value {
1587      mpc: MEDIA_PERFORMANCE_CLASS_13
1588      specification: "MUST have a codec initialization latency of 30 ms or less for a 128 kbps or lower bitrate audio encoding session for all audio encoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video recording initialization."
1589      required_values: {
1590        key: "codec_initialization_latency_ms"
1591        value {
1592          long_value: 30
1593        }
1594      }
1595    }
1596  }
1597  specs: {
1598    key: 34
1599    value {
1600      mpc: MEDIA_PERFORMANCE_CLASS_14
1601      specification: "same"
1602      required_values: {
1603        key: "codec_initialization_latency_ms"
1604        value {
1605          long_value: 30
1606        }
1607      }
1608    }
1609  }
1610  specs: {
1611    key: 35
1612    value {
1613      mpc: MEDIA_PERFORMANCE_CLASS_15
1614      specification: "same"
1615      required_values: {
1616        key: "codec_initialization_latency_ms"
1617        value {
1618          long_value: 30
1619        }
1620      }
1621    }
1622  }
1623}
1624requirements {
1625  id: "5.1/H-1-9"
1626  name: "Secure Video Decoder Sessions"
1627  description: "Secure hardware decoders"
1628  test_configs: {
1629    key: ""
1630    value: {
1631      description: "Default test config"
1632      proto_field_number: 21
1633    }
1634  }
1635  test_configs: {
1636    key: "HDR"
1637    value: {
1638      description: "Test config for hdr tests"
1639      proto_field_number: 22
1640    }
1641  }
1642  measurements: {
1643    key: "concurrent_fps"
1644    value: {
1645      description: "Achieved FPS"
1646      measurement_type: MEASUREMENT_TYPE_DOUBLE
1647      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
1648      proto_field_number: 3
1649    }
1650  }
1651  measurements: {
1652    key: "frame_drops_per_sec"
1653    value: {
1654      description: "Number of frame drops per second"
1655      measurement_type: MEASUREMENT_TYPE_DOUBLE
1656      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1657      proto_field_number: 4
1658    }
1659  }
1660  measurements: {
1661    key: "is_hdr"
1662    value: {
1663      description: "Whether the test is HDR or not"
1664      measurement_type: MEASUREMENT_TYPE_BOOL
1665      comparison: COMPARISON_CONFIG
1666      proto_field_number: 5
1667    }
1668  }
1669  specs {
1670    key: 33
1671    value {
1672      mpc: MEDIA_PERFORMANCE_CLASS_13
1673      specification:
1674        "MUST support 2 instances of secure hardware video decoder sessions "
1675        "(AVC, HEVC, VP9, AV1 or later) in any codec combination running "
1676        "concurrently at 1080p resolution@30 fps."
1677      required_values: {
1678        key: "concurrent_fps"
1679        value {
1680          double_value: 57  # 2 decoders * 30 fps * 0.95 tolerance factor
1681        }
1682      }
1683      required_values: {
1684        key: "is_hdr"
1685        value {
1686          bool_value: false
1687        }
1688      }
1689    }
1690  }
1691  specs {
1692    key: 34
1693    value {
1694      mpc: MEDIA_PERFORMANCE_CLASS_14
1695      specification:
1696        "MUST support 2 instances of secure hardware video decoder sessions "
1697        "(AVC, HEVC, VP9, AV1 or later) in any codec combination running "
1698        "concurrently at 1080p resolution@30 fps for both 8-bit "
1699        "(SDR) and 10-bit HDR content."
1700      test_config_id: "HDR"
1701      required_values: {
1702        key: "concurrent_fps"
1703        value {
1704          double_value: 57  # 2 decoders * 30 fps * 0.95 tolerance factor
1705        }
1706      }
1707      required_values: {
1708        key: "is_hdr"
1709        value {
1710          bool_value: true
1711        }
1712      }
1713    }
1714  }
1715  specs {
1716    key: 35
1717    value {
1718      mpc: MEDIA_PERFORMANCE_CLASS_15
1719      specification:
1720        "MUST support 2 instances of secure hardware video decoder sessions "
1721        "(AVC, HEVC, VP9, AV1, or later) in any codec combination running "
1722        "concurrently at 1080p resolution@30 fps for both 8-bit "
1723        "(SDR) and 10-bit HDR content. For all sessions, there MUST NOT be "
1724        "more than 1 frame dropped per second."
1725      test_config_id: "HDR"
1726      required_values: {
1727        key: "concurrent_fps"
1728        value {
1729          double_value: 57  # 2 decoders * 30 fps * 0.95 tolerance factor
1730        }
1731      }
1732      required_values: {
1733        key: "frame_drops_per_sec"
1734        value {
1735          double_value: 1
1736        }
1737      }
1738      required_values: {
1739        key: "is_hdr"
1740        value {
1741          bool_value: true
1742        }
1743      }
1744    }
1745  }
1746}
1747requirements {
1748  id: "5.1/H-1-10"
1749  name: "Video Decoder Sessions"
1750  description: "hardware decoders, secure with non-secure hardware decoders"
1751  test_configs: {
1752    key: "1080p"
1753    value: {
1754      description: "Test config for 1080p"
1755      proto_field_number: 23
1756    }
1757  }
1758  test_configs: {
1759    key: "4k"
1760    value: {
1761      description: "Test config for 4k"
1762      proto_field_number: 24
1763    }
1764  }
1765  measurements: {
1766    key: "concurrent_fps"
1767    value: {
1768      description: "Achieved FPS"
1769      measurement_type: MEASUREMENT_TYPE_DOUBLE
1770      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
1771      proto_field_number: 3
1772    }
1773  }
1774  measurements: {
1775    key: "frame_drops_per_sec"
1776    value: {
1777      description: "Number of frame drops per second"
1778      measurement_type: MEASUREMENT_TYPE_DOUBLE
1779      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1780      proto_field_number: 4
1781    }
1782  }
1783  measurements: {
1784    key: "resolution"
1785    value: {
1786      description: "The resolution the test was run at"
1787      measurement_type: MEASUREMENT_TYPE_INT
1788      comparison: COMPARISON_CONFIG
1789      proto_field_number: 5
1790    }
1791  }
1792  specs {
1793    key: 33
1794    value {
1795      mpc: MEDIA_PERFORMANCE_CLASS_13
1796      specification: "MUST support 3 instances of non-secure hardware video decoder sessions together with 1 instance of secure hardware video decoder session (4 instances total) (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently at 1080p resolution@30fps."
1797      test_config_id: "1080p"
1798      required_values: {
1799        key: "concurrent_fps"
1800        value {
1801          double_value: 114  # 4 decoders * 30 fps * 0.95 tolerance factor
1802        }
1803      }
1804      required_values: {
1805        key: "resolution"
1806        value {
1807          int_value: 1080
1808        }
1809      }
1810    }
1811  }
1812  specs {
1813    key: 34
1814    value {
1815      mpc: MEDIA_PERFORMANCE_CLASS_14
1816      specification: "MUST support 3 instances of non-secure hardware video decoder sessions together with 1 instance of secure hardware video decoder session (4 instances total) (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently with 3 sessions at 4K resolution@30 fps (unless AV1) which includes one secure decoder session and 1 nn-secure session at 1080p resolution@30fps where at most 2 sessions can be in 10-bit HDR. AV1 codec sessions are only required to support 1080p resolution even when this requirement calls for 4K."
1817      test_config_id: "4k"
1818      required_values: {
1819        key: "concurrent_fps"
1820        value {
1821          double_value: 114  # 4 decoders * 30 fps * 0.95 tolerance factor
1822        }
1823      }
1824      required_values: {
1825        key: "resolution"
1826        value {
1827          int_value: 2160
1828        }
1829      }
1830    }
1831  }
1832  specs {
1833    key: 35
1834    value {
1835      mpc: MEDIA_PERFORMANCE_CLASS_15
1836      specification: "MUST support 3 instances of non-secure hardware video decoder sessions together with 1 instance of secure hardware video decoder session (4 instances total) (AVC, HEVC, VP9, AV1, or later) in any codec combination running concurrently with 3 sessions at 4K resolution@30fps (unless AV1) which includes one secure decoder session and 1 nn-secure session at 1080p resolution@30fps where at most 2 sessions can be in 10-bit HDR. For all sessions, there MUST NOT be more than 1 frame dropped per second. AV1 codec sessions are only required to support 1080p resolution even when this requirement calls for 4K."
1837      test_config_id: "4k"
1838      required_values: {
1839        key: "concurrent_fps"
1840        value {
1841          double_value: 114  # 4 decoders * 30 fps * 0.95 tolerance factor
1842        }
1843      }
1844      required_values: {
1845        key: "frame_drops_per_sec"
1846        value {
1847          double_value: 1
1848        }
1849      }
1850      required_values: {
1851        key: "resolution"
1852        value {
1853          int_value: 2160
1854        }
1855      }
1856    }
1857  }
1858}
1859requirements {
1860  id: "5.1/H-1-11"
1861  name: "Secure Hardware Decoders"
1862  description: "Supports various secure hardware decoders"
1863  test_configs: {
1864    key: ""
1865    value: {
1866      description: "Default test config"
1867      proto_field_number: 25
1868    }
1869  }
1870  measurements: {
1871    key: "secure_requirement_satisfied_boolean"
1872    value: {
1873      description: "Are secure hardware decoders supported"
1874      measurement_type: MEASUREMENT_TYPE_BOOL
1875      comparison: COMPARISON_EQUAL
1876      proto_field_number: 3
1877    }
1878  }
1879  specs {
1880    key: 33
1881    value {
1882      mpc: MEDIA_PERFORMANCE_CLASS_13
1883      specification: "MUST support a secure decoder for every hardware AVC, HEVC, VP9 or AV1 decoder on the device."
1884      required_values: {
1885        key: "secure_requirement_satisfied_boolean"
1886        value {
1887          bool_value: true
1888        }
1889      }
1890    }
1891  }
1892  specs {
1893    key: 34
1894    value {
1895      mpc: MEDIA_PERFORMANCE_CLASS_14
1896      specification: "same"
1897      required_values: {
1898        key: "secure_requirement_satisfied_boolean"
1899        value {
1900          bool_value: true
1901        }
1902      }
1903    }
1904  }
1905  specs {
1906    key: 35
1907    value {
1908      mpc: MEDIA_PERFORMANCE_CLASS_15
1909      specification: "same"
1910      required_values: {
1911        key: "secure_requirement_satisfied_boolean"
1912        value {
1913          bool_value: true
1914        }
1915      }
1916    }
1917  }
1918}
1919requirements {
1920  id: "5.1/H-1-12"
1921  name: "Video Decoder Init Latency"
1922  description: "Video decoder initialization latency"
1923  test_configs: {
1924    key: ""
1925    value: {
1926      description: "Default test config"
1927      proto_field_number: 26
1928    }
1929  }
1930  variants: {
1931    key: "dolby"
1932    value: {
1933      description: "When the codec is Dolby Vision"
1934    }
1935  }
1936  measurements: {
1937    key: "codec_initialization_latency_ms"
1938    value: {
1939      description: "Codec initialization latency in milliseconds"
1940      measurement_type: MEASUREMENT_TYPE_LONG
1941      comparison: COMPARISON_LESS_THAN_OR_EQUAL
1942      proto_field_number: 3
1943    }
1944  }
1945  specs {
1946    key: 33
1947    value {
1948      mpc: MEDIA_PERFORMANCE_CLASS_13
1949      specification: "MUST have a codec initialization latency of 40 ms or less for a 1080p or smaller video decoding session for all hardware video decoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video playback initialization. For Dolby vision codec, the codec initialization latency MUST be 50 ms or less."
1950      required_values: {
1951        key: "codec_initialization_latency_ms"
1952        value {
1953          long_value: 40
1954        }
1955      }
1956      variant_specs: {
1957        key: "dolby"
1958        value: {
1959          required_values: {
1960            key: "codec_initialization_latency_ms"
1961            value {
1962              long_value: 50
1963            }
1964          }
1965        }
1966      }
1967    }
1968  }
1969  specs {
1970    key: 34
1971    value {
1972      mpc: MEDIA_PERFORMANCE_CLASS_14
1973      specification: "same"
1974      required_values: {
1975        key: "codec_initialization_latency_ms"
1976        value {
1977          long_value: 40
1978        }
1979      }
1980      variant_specs: {
1981        key: "dolby"
1982        value: {
1983          required_values: {
1984            key: "codec_initialization_latency_ms"
1985            value {
1986              long_value: 50
1987            }
1988          }
1989        }
1990      }
1991    }
1992  }
1993  specs {
1994    key: 35
1995    value {
1996      mpc: MEDIA_PERFORMANCE_CLASS_15
1997      specification: "same"
1998      required_values: {
1999        key: "codec_initialization_latency_ms"
2000        value {
2001          long_value: 40
2002        }
2003      }
2004      variant_specs: {
2005        key: "dolby"
2006        value: {
2007          required_values: {
2008            key: "codec_initialization_latency_ms"
2009            value {
2010              long_value: 50
2011            }
2012          }
2013        }
2014      }
2015    }
2016  }
2017}
2018requirements {
2019  id: "5.1/H-1-13"
2020  name: "Audio decoder init latency"
2021  description: "Maximum codec initialization latency for a 128 kbps or lower bitrate audio decoding session for all audio decoders when under load."
2022  test_configs: {
2023    key: ""
2024    value: {
2025      proto_field_number: 27
2026    }
2027  }
2028  measurements: {
2029    key: "codec_initialization_latency_ms"
2030    value: {
2031      description: "Codec initialization latency in milliseconds"
2032      measurement_type: MEASUREMENT_TYPE_LONG
2033      comparison: COMPARISON_LESS_THAN_OR_EQUAL
2034      proto_field_number: 3
2035    }
2036  }
2037  specs {
2038    key: 33
2039    value {
2040      mpc: MEDIA_PERFORMANCE_CLASS_13
2041      specification: "MUST have a codec initialization latency of 30 ms or less for a 128 kbps or lower bitrate audio decoding session for all audio decoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video playback initialization."
2042      required_values: {
2043        key: "codec_initialization_latency_ms"
2044        value {
2045          long_value: 30
2046        }
2047      }
2048    }
2049  }
2050  specs {
2051    key: 34
2052    value {
2053      mpc: MEDIA_PERFORMANCE_CLASS_14
2054      specification: "MUST have a codec initialization latency of 30 ms or less for a 128 kbps or lower bitrate audio decoding session for all audio decoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video playback initialization."
2055      required_values: {
2056        key: "codec_initialization_latency_ms"
2057        value {
2058          long_value: 30
2059        }
2060      }
2061    }
2062  }
2063  specs {
2064    key: 35
2065    value {
2066      mpc: MEDIA_PERFORMANCE_CLASS_15
2067      specification: "MUST have a codec initialization latency of 30 ms or less for a 128 kbps or lower bitrate audio decoding session for all audio decoders when under load. Load here is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs together with the 1080p audio-video playback initialization."
2068      required_values: {
2069        key: "codec_initialization_latency_ms"
2070        value {
2071          long_value: 30
2072        }
2073      }
2074    }
2075  }
2076}
2077requirements {
2078  id: "5.1/H-1-14"
2079  name: "AV1 Hardware Decoder"
2080  description: "AV1 hardware decoder\n- Film grain effect"
2081  test_configs: {
2082    key: ""
2083    value: {
2084      description: "Default test config"
2085      proto_field_number: 28
2086    }
2087  }
2088  measurements: {
2089    key: "av1_decoder_requirement_boolean"
2090    value: {
2091      description: "Is AV1 hardware decoder supported."
2092      measurement_type: MEASUREMENT_TYPE_BOOL
2093      comparison: COMPARISON_EQUAL
2094      proto_field_number: 3
2095    }
2096  }
2097  measurements: {
2098    key: "av1_frames_without_film_grain"
2099    value: {
2100      description: "Number of frames without film grain effect."
2101      measurement_type: MEASUREMENT_TYPE_INT
2102      comparison: COMPARISON_EQUAL
2103      proto_field_number: 4
2104    }
2105  }
2106  specs {
2107    key: 33
2108    value {
2109      mpc: MEDIA_PERFORMANCE_CLASS_13
2110      specification: "MUST support AV1 hardware decoder Main 10, Level 4.1."
2111      required_values: {
2112        key: "av1_decoder_requirement_boolean"
2113        value {
2114          bool_value: true
2115        }
2116      }
2117    }
2118  }
2119  specs {
2120    key: 34
2121    value {
2122      mpc: MEDIA_PERFORMANCE_CLASS_14
2123      specification: "MUST support AV1 hardware decoder Main 10, Level 4.1 and film grain."
2124      required_values: {
2125        key: "av1_decoder_requirement_boolean"
2126        value {
2127          bool_value: true
2128        }
2129      }
2130    }
2131  }
2132  specs {
2133    key: 35
2134    value {
2135      mpc: MEDIA_PERFORMANCE_CLASS_15
2136      specification: "MUST support AV1 hardware decoder Main 10, Level 4.1 with film grain effect over GPU composition."
2137      required_values: {
2138        key: "av1_decoder_requirement_boolean"
2139        value {
2140          bool_value: true
2141        }
2142      }
2143      required_values: {
2144        key: "av1_frames_without_film_grain"
2145        value {
2146          int_value: 0
2147        }
2148      }
2149    }
2150  }
2151}
2152requirements {
2153  id: "5.1/H-SR-1"
2154  specs {
2155    key: 33
2156    value {
2157      mpc: MEDIA_PERFORMANCE_CLASS_13
2158      specification: "Are STRONGLY RECOMMENDED to support Film Grain for AV1 hardware decoder."
2159    }
2160  }
2161}
2162requirements {
2163  id: "5.1/H-1-15"
2164  name: "Hardware Decoder 4K60"
2165  description: "4K60 hardware decoder"
2166  test_configs: {
2167    key: ""
2168    value: {
2169      description: "Default test config"
2170      proto_field_number: 29
2171    }
2172  }
2173  measurements: {
2174    key: "number_4k_hw_decoders"
2175    value: {
2176      description: "Number of 4K60 hardware decoders."
2177      measurement_type: MEASUREMENT_TYPE_INT
2178      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
2179      proto_field_number: 3
2180    }
2181  }
2182  specs {
2183    key: 33
2184    value {
2185      mpc: MEDIA_PERFORMANCE_CLASS_13
2186      specification: "MUST have at least 1 hardware video decoder supporting 4K60."
2187      required_values: {
2188        key: "number_4k_hw_decoders"
2189        value {
2190          int_value: 1
2191        }
2192      }
2193    }
2194  }
2195  specs {
2196    key: 34
2197    value {
2198      mpc: MEDIA_PERFORMANCE_CLASS_14
2199      specification: "same"
2200      required_values: {
2201        key: "number_4k_hw_decoders"
2202        value {
2203          int_value: 1
2204        }
2205      }
2206    }
2207  }
2208  specs {
2209    key: 35
2210    value {
2211      mpc: MEDIA_PERFORMANCE_CLASS_15
2212      specification: "same"
2213      required_values: {
2214        key: "number_4k_hw_decoders"
2215        value {
2216          int_value: 1
2217        }
2218      }
2219    }
2220  }
2221}
2222requirements {
2223  id: "5.1/H-1-16"
2224  name: "Hardware Encoder 4K60"
2225  description: "4K60 hardware encoder"
2226  test_configs: {
2227    key: ""
2228    value: {
2229      description: "Default test config"
2230      proto_field_number: 30
2231    }
2232  }
2233  measurements: {
2234    key: "number_4k_hw_encoders"
2235    value: {
2236      description: "Number of 4K60 hardware encoders."
2237      measurement_type: MEASUREMENT_TYPE_INT
2238      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
2239      proto_field_number: 3
2240    }
2241  }
2242  specs {
2243    key: 33
2244    value {
2245      mpc: MEDIA_PERFORMANCE_CLASS_13
2246      specification: "MUST have at least 1 hardware video encoder supporting 4K60."
2247      required_values: {
2248        key: "number_4k_hw_encoders"
2249        value {
2250          int_value: 1
2251        }
2252      }
2253    }
2254  }
2255  specs {
2256    key: 34
2257    value {
2258      mpc: MEDIA_PERFORMANCE_CLASS_14
2259      specification: "same"
2260      required_values: {
2261        key: "number_4k_hw_encoders"
2262        value {
2263          int_value: 1
2264        }
2265      }
2266    }
2267  }
2268  specs {
2269    key: 35
2270    value {
2271      mpc: MEDIA_PERFORMANCE_CLASS_15
2272      specification: "same"
2273      required_values: {
2274        key: "number_4k_hw_encoders"
2275        value {
2276          int_value: 1
2277        }
2278      }
2279    }
2280  }
2281}
2282requirements {
2283  id: "5.1/H-1-17"
2284  name: "AVIF Baseline Profile"
2285  description: "AVIF Baseline Profile"
2286  test_configs: {
2287    key: ""
2288    value: {
2289      description: "Default test config"
2290      proto_field_number: 31
2291    }
2292  }
2293  measurements: {
2294    key: "avif_image_decoder_boolean"
2295    value: {
2296      description: "has decoder supporting AVIF Baseline Profile supported."
2297      measurement_type: MEASUREMENT_TYPE_BOOL
2298      comparison: COMPARISON_EQUAL
2299      proto_field_number: 3
2300    }
2301  }
2302  specs {
2303    key: 34
2304    value {
2305      mpc: MEDIA_PERFORMANCE_CLASS_14
2306      specification: "MUST have at least 1 hardware image decoder supporting AVIF Baseline Profile."
2307      required_values: {
2308        key: "avif_image_decoder_boolean"
2309        value {
2310          bool_value: true
2311        }
2312      }
2313    }
2314  }
2315  specs {
2316    key: 35
2317    value {
2318      mpc: MEDIA_PERFORMANCE_CLASS_15
2319      specification: "same"
2320      required_values: {
2321        key: "avif_image_decoder_boolean"
2322        value {
2323          bool_value: true
2324        }
2325      }
2326    }
2327  }
2328}
2329requirements {
2330  id: "5.1/H-1-18"
2331  name: "AV1 Encoder"
2332  description: "AV1 encoder"
2333  test_configs: {
2334    key: ""
2335    value: {
2336      description: "Default test config"
2337      proto_field_number: 32
2338    }
2339  }
2340  measurements: {
2341    key: "av1_encoder_resolution"
2342    value: {
2343      description: "Resolution of the test."
2344      measurement_type: MEASUREMENT_TYPE_INT
2345      comparison: COMPARISON_CONFIG
2346      proto_field_number: 3
2347    }
2348  }
2349  measurements: {
2350    key: "av1_encoder_fps"
2351    value: {
2352      description: "Achieved FPS."
2353      measurement_type: MEASUREMENT_TYPE_DOUBLE
2354      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
2355      proto_field_number: 4
2356    }
2357  }
2358  measurements: {
2359    key: "av1_encoder_bitrate"
2360    value: {
2361      description: "Bitrate of the test."
2362      measurement_type: MEASUREMENT_TYPE_INT
2363      comparison: COMPARISON_CONFIG
2364      proto_field_number: 5
2365    }
2366  }
2367  specs {
2368    key: 34
2369    value {
2370      mpc: MEDIA_PERFORMANCE_CLASS_14
2371      specification: "MUST support AV1 encoder which can encode up to 480p resolution at 30fps and 1Mbps."
2372      required_values: {
2373        key: "av1_encoder_resolution"
2374        value {
2375          int_value: 480
2376        }
2377      }
2378      required_values: {
2379        key: "av1_encoder_fps"
2380        value {
2381          double_value: 30.0
2382        }
2383      }
2384      required_values: {
2385        key: "av1_encoder_bitrate"
2386        value {
2387          int_value: 1
2388        }
2389      }
2390    }
2391  }
2392  specs {
2393    key: 35
2394    value {
2395      mpc: MEDIA_PERFORMANCE_CLASS_15
2396      specification: "same"
2397      required_values: {
2398        key: "av1_encoder_resolution"
2399        value {
2400          int_value: 480
2401        }
2402      }
2403      required_values: {
2404        key: "av1_encoder_fps"
2405        value {
2406          double_value: 30.0
2407        }
2408      }
2409      required_values: {
2410        key: "av1_encoder_bitrate"
2411        value {
2412          int_value: 1
2413        }
2414      }
2415    }
2416  }
2417}
2418requirements {
2419  id: "5.12/H-SR"
2420  specs {
2421    key: 34
2422    value {
2423      mpc: MEDIA_PERFORMANCE_CLASS_14
2424      specification: "Are Strongly Recommended to support support the Feature_HdrEditing feature for all hardware AV1 and HEVC encoders present on the device."
2425    }
2426  }
2427  specs {
2428    key: 35
2429    value {
2430      mpc: MEDIA_PERFORMANCE_CLASS_15
2431      specification: "same"
2432    }
2433  }
2434}
2435requirements {
2436  id: "5.1/H-1-19"
2437  name: "Concurrent HDR Transcoding Sessions"
2438  description: "Concurrent HDR transcoding sessions"
2439  test_configs: {
2440    key: ""
2441    value: {
2442      description: "Default test config"
2443      proto_field_number: 33
2444    }
2445  }
2446  measurements: {
2447    key: "concurrent_fps"
2448    value: {
2449      description: "The number of frames per second that can be decoded concurrently"
2450      measurement_type: MEASUREMENT_TYPE_DOUBLE
2451      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
2452      proto_field_number: 3
2453    }
2454  }
2455  measurements: {
2456    key: "frame_drops_per_sec"
2457    value: {
2458      description: "The number of frames dropped per second"
2459      measurement_type: MEASUREMENT_TYPE_DOUBLE
2460      comparison: COMPARISON_LESS_THAN_OR_EQUAL
2461      proto_field_number: 4
2462    }
2463  }
2464  measurements: {
2465    key: "resolution"
2466    value: {
2467      description: "The resolution the test was run at"
2468      measurement_type: MEASUREMENT_TYPE_INT
2469      comparison: COMPARISON_CONFIG
2470      proto_field_number: 5
2471    }
2472  }
2473  specs {
2474    key: 34
2475    value {
2476      mpc: MEDIA_PERFORMANCE_CLASS_14
2477      specification: "MUST support 3 instances of 10-bit (HDR) hardware video decoder and hardware video encoder sessions (AVC, HEVC, VP9, AV1 or later) in any codec combination running concurrently at 4K@30fps resolution (unless AV1) out of which at most 1 is an encoder session, which could be configured in RGBA_1010102 input format through a GL surface. HDR metadata generation by the encoder is not required if encoding from the GL surface. AV1 codec sessions are only required to support 1080p resolution even when this requirement calls for 4K."
2478      required_values: {
2479        key: "concurrent_fps"
2480        value {
2481          double_value: 42.75  # 3 codecs * 30 fps * 0.95 tolerance factor / 2
2482        }
2483      }
2484      required_values: {
2485        key: "resolution"
2486        value {
2487          int_value: 2160
2488        }
2489      }
2490    }
2491  }
2492  specs {
2493    key: 35
2494    value {
2495      mpc: MEDIA_PERFORMANCE_CLASS_15
2496      specification: "MUST support 2 instances of secure hardware video decoder sessions (AVC, HEVC, VP9, AV1, or later) in any codec combination running concurrently at 4k resolution@30 fps (unless AV1) for both 8-bit (SDR) and 10-bit HDR content. For all sessions, there MUST NOT be more than 1 frame dropped per second. AV1 codec sessions are only required to support 1080p resolution even when this requirement calls for 4K."
2497      required_values: {
2498        key: "concurrent_fps"
2499        value {
2500          double_value: 42.75  # 3 codecs * 30 fps * 0.95 tolerance factor / 2
2501        }
2502      }
2503      required_values: {
2504        key: "frame_drops_per_sec"
2505        value {
2506          double_value: 1
2507        }
2508      }
2509      required_values: {
2510        key: "resolution"
2511        value {
2512          int_value: 2160
2513        }
2514      }
2515    }
2516  }
2517}
2518requirements {
2519  id: "5.1/H-1-20"
2520  name: "Video Codec Hlg Editing"
2521  description: "Video codec Hlg Editing"
2522  test_configs: {
2523    key: ""
2524    value: {
2525      description: "Default test config"
2526      proto_field_number: 34
2527    }
2528  }
2529  measurements: {
2530    key: "hlg_editing"
2531    value: {
2532      description: "Is hdr Editing supported."
2533      measurement_type: MEASUREMENT_TYPE_BOOL
2534      comparison: COMPARISON_EQUAL
2535      proto_field_number: 3
2536    }
2537  }
2538  specs {
2539    key: 35
2540    value {
2541      mpc: MEDIA_PERFORMANCE_CLASS_15
2542      specification: "MUST support the Feature_HdrEditing feature for all hardware AV1 and HEVC encoders present on the device at 4K resolution or the largest Camera-supported resolution, whichever is less."
2543      required_values: {
2544        key: "hlg_editing"
2545        value {
2546          bool_value: true
2547        }
2548      }
2549    }
2550  }
2551}
2552requirements {
2553  id: "5.1/H-1-21"
2554  name: "Video Codec Dynamic Color Aspect"
2555  description: "Video codec dynamic color aspect"
2556  test_configs: {
2557    key: ""
2558    value: {
2559      description: "Default test config"
2560      proto_field_number: 35
2561    }
2562  }
2563  measurements: {
2564    key: "dynamic_color_aspects"
2565    value: {
2566      description: "Is Dynamic Color Aspect supported."
2567      measurement_type: MEASUREMENT_TYPE_BOOL
2568      comparison: COMPARISON_EQUAL
2569      proto_field_number: 3
2570    }
2571  }
2572  specs {
2573    key: 35
2574    value {
2575      mpc: MEDIA_PERFORMANCE_CLASS_15
2576      specification: "MUST support FEATURE_DynamicColorAspect for all hardware video decoders (AVC, HEVC, VP9, AV1, or later). Note: This means applications can update the color aspects of the video content during the decoding session. Decoders that support 10-bit and 8-bit content MUST support dynamically switching between 8- and 10-bit content in Surface mode. Decoders that support HDR transfer function MUST support dynamically switching between SDR and HDR content."
2577      required_values: {
2578        key: "dynamic_color_aspects"
2579        value {
2580          bool_value: true
2581        }
2582      }
2583    }
2584  }
2585}
2586requirements {
2587  id: "5.1/H-1-22"
2588  name: "Video Codec Portrait Resolution"
2589  description: "Video codec portrait resolution"
2590  test_configs: {
2591    key: ""
2592    value: {
2593      description: "Default test config"
2594      proto_field_number: 36
2595    }
2596  }
2597  measurements: {
2598    key: "portrait_resolution"
2599    value: {
2600      description: "Is Portrait Resolution supported."
2601      measurement_type: MEASUREMENT_TYPE_BOOL
2602      comparison: COMPARISON_EQUAL
2603      proto_field_number: 3
2604    }
2605  }
2606  specs {
2607    key: 35
2608    value {
2609      mpc: MEDIA_PERFORMANCE_CLASS_15
2610      specification: "MUST support encoding, decoding, GPU-editing and displaying video content in portrait aspect ratio regardless of the rotation metadata for the largest Camera supported resolution or 4K whichever is less. Note: this includes HDR profiles if codec supports HDR. AV1 codecs are only required to support 1080p resolution. This requirement is only for hardware codecs, GPU and the DPU."
2611      required_values: {
2612        key: "portrait_resolution"
2613        value {
2614          bool_value: true
2615        }
2616      }
2617    }
2618  }
2619}
2620requirements {
2621  id: "5.12/H-1-2"
2622  name: "RGBA 1010102 color format"
2623  description: "RGBA_1010102 color format support for hardware encoders."
2624  test_configs: {
2625    key: ""
2626    value: {
2627      description: "Default test config"
2628      proto_field_number: 37
2629    }
2630  }
2631  measurements: {
2632    key: "rgba_1010102_color_format"
2633    value: {
2634      description: "Is RGBA_1010102 supported."
2635      measurement_type: MEASUREMENT_TYPE_BOOL
2636      comparison: COMPARISON_EQUAL
2637      proto_field_number: 3
2638    }
2639  }
2640  specs {
2641    key: 34
2642    value {
2643      mpc: MEDIA_PERFORMANCE_CLASS_14
2644      specification: "MUST support RGBA_1010102 color format for all hardware AV1 and HEVC encoders present on the device."
2645      required_values: {
2646        key: "rgba_1010102_color_format"
2647        value {
2648          bool_value: true
2649        }
2650      }
2651    }
2652  }
2653  specs {
2654    key: 35
2655    value {
2656      mpc: MEDIA_PERFORMANCE_CLASS_15
2657      specification: "MUST support RGBA_1010102 color format for all hardware AV1 and HEVC encoders present on the device."
2658      required_values: {
2659        key: "rgba_1010102_color_format"
2660        value {
2661          bool_value: true
2662        }
2663      }
2664    }
2665  }
2666}
2667requirements {
2668  id: "5.12/H-1-3"
2669  name: "Ext Yuv Target"
2670  description: "YUV texture sampling"
2671  test_configs: {
2672    key: ""
2673    value: {
2674      description: "Default test config"
2675      proto_field_number: 38
2676    }
2677  }
2678  measurements: {
2679    key: "ext_yuv_target_supported"
2680    value: {
2681      description: "Is EXT_YUV_target supported."
2682      measurement_type: MEASUREMENT_TYPE_BOOL
2683      comparison: COMPARISON_EQUAL
2684      proto_field_number: 3
2685    }
2686  }
2687  specs {
2688    key: 34
2689    value {
2690      mpc: MEDIA_PERFORMANCE_CLASS_14
2691      specification: "MUST advertise support for the EXT_YUV_target extension to sample from YUV textures in both 8 and 10-bits."
2692      required_values: {
2693        key: "ext_yuv_target_supported"
2694        value {
2695          bool_value: true
2696        }
2697      }
2698    }
2699  }
2700  specs {
2701    key: 35
2702    value {
2703      mpc: MEDIA_PERFORMANCE_CLASS_15
2704      specification: "same"
2705      required_values: {
2706        key: "ext_yuv_target_supported"
2707        value {
2708          bool_value: true
2709        }
2710      }
2711    }
2712  }
2713}
2714requirements {
2715  id: "5.2/H-2-1"
2716  name: "VEQ"
2717  description: "Video encoding quality (VEQ) tests."
2718  test_configs: {
2719    key: ""
2720    value: {
2721      description: "Default test config"
2722      proto_field_number: 39
2723    }
2724  }
2725  measurements: {
2726    key: "bdrate_vmaf"
2727    value: {
2728      description: "BDRATE-VMAF result"
2729      measurement_type: MEASUREMENT_TYPE_DOUBLE
2730      comparison: COMPARISON_LESS_THAN_OR_EQUAL
2731      proto_field_number: 3
2732    }
2733  }
2734  measurements: {
2735    key: "calculated"
2736    value: {
2737      description:
2738        "Was BDRATE-VMAF calculated. "
2739        "Because 0 is a passing BDRATE-VMAF result, setting this field verifies "
2740        "the calculation was done."
2741      measurement_type: MEASUREMENT_TYPE_BOOL
2742      comparison: COMPARISON_EQUAL
2743      proto_field_number: 4
2744    }
2745  }
2746  measurements: {
2747    key: "codec_name"
2748    value: {
2749      description: "Codec name"
2750      measurement_type: MEASUREMENT_TYPE_STRING
2751      comparison: COMPARISON_INFO_ONLY
2752      proto_field_number: 5
2753    }
2754  }
2755  measurements: {
2756    key: "bframes_allowed"
2757    value: {
2758      description: "The encoding is allowed to include b-frames."
2759      measurement_type: MEASUREMENT_TYPE_BOOL
2760      comparison: COMPARISON_INFO_ONLY
2761      proto_field_number: 6
2762    }
2763  }
2764  measurements: {
2765    key: "resolution"
2766    value: {
2767      description:
2768        "The resolution of the video written as height x width p "
2769        "(for example 1080x1920p)."
2770      measurement_type: MEASUREMENT_TYPE_BOOL
2771      comparison: COMPARISON_INFO_ONLY
2772      proto_field_number: 7
2773    }
2774  }
2775  specs {
2776    key: 34
2777    value {
2778      mpc: MEDIA_PERFORMANCE_CLASS_14
2779      specification:
2780        "MUST meet the minimum quality target defined by the video encoder "
2781        "rate-distortion curves for hardware AVC and HEVC codecs, as defined "
2782        "in Run Performance Class 14 (PC14)-Video encoding quality (VEQ) tests."
2783      required_values: {
2784        key: "bdrate_vmaf"
2785        value {
2786          double_value: 0.0
2787        }
2788      }
2789      required_values: {
2790        key: "calculated"
2791        value {
2792          bool_value: true
2793        }
2794      }
2795      required_values: {
2796        key: "codec_name"
2797        value {
2798        }
2799      }
2800      required_values: {
2801        key: "bframes_allowed"
2802        value {
2803        }
2804      }
2805      required_values: {
2806        key: "resolution"
2807        value {
2808        }
2809      }
2810    }
2811  }
2812  specs {
2813    key: 35
2814    value {
2815      mpc: MEDIA_PERFORMANCE_CLASS_14
2816      specification:
2817        "MUST meet the minimum quality target defined by the video encoder "
2818        "rate-distortion curves for hardware AVC and HEVC codecs, as defined "
2819        "in Run Performance Class 14 (PC14)-Video encoding quality (VEQ) tests."
2820      required_values: {
2821        key: "bdrate_vmaf"
2822        value {
2823          double_value: 0.0
2824        }
2825      }
2826      required_values: {
2827        key: "calculated"
2828        value {
2829          bool_value: true
2830        }
2831      }
2832      required_values: {
2833        key: "codec_name"
2834        value {
2835        }
2836      }
2837      required_values: {
2838        key: "bframes_allowed"
2839        value {
2840        }
2841      }
2842      required_values: {
2843        key: "resolution"
2844        value {
2845        }
2846      }
2847    }
2848  }
2849}
2850requirements {
2851  id: "5.3/H-1-1"
2852  name: "Frame drop"
2853  description: "- Decoder frame drops"
2854  test_configs: {
2855    key: "1080p_30fps"
2856    value: {
2857      description: "Tests frame drop at 1080p resolution and 30fps"
2858      proto_field_number: 40
2859    }
2860  }
2861  test_configs: {
2862    key: "1080p_60fps"
2863    value: {
2864      description: "Tests frame drop at 1080p resolution and 60fps"
2865      proto_field_number: 41
2866    }
2867  }
2868  test_configs: {
2869    key: "4k_60fps"
2870    value: {
2871      description: "Tests frame drop at 4k resolution and 60fps"
2872      proto_field_number: 42
2873    }
2874  }
2875  measurements: {
2876    key: "frame_drops_per_30sec"
2877    value: {
2878      id: "frame_drops_per_30sec"
2879      description: "Frame dropped in 30 seconds"
2880      measurement_type: MEASUREMENT_TYPE_INT
2881      comparison: COMPARISON_LESS_THAN_OR_EQUAL
2882      proto_field_number: 3
2883    }
2884  }
2885  measurements: {
2886    key: "frame_rate"
2887    value: {
2888      id: "frame_rate"
2889      description: "Frame rate the test was ran at."
2890      measurement_type: MEASUREMENT_TYPE_DOUBLE
2891      comparison: COMPARISON_CONFIG
2892      proto_field_number: 4
2893    }
2894  }
2895  measurements: {
2896    key: "resolution"
2897    value: {
2898      id: "resolution"
2899      description: "Resolution the test was ran at."
2900      measurement_type: MEASUREMENT_TYPE_INT
2901      comparison: COMPARISON_CONFIG
2902      proto_field_number: 5
2903    }
2904  }
2905  specs {
2906    key: 30
2907    value {
2908      mpc: MEDIA_PERFORMANCE_CLASS_11
2909      specification: "MUST NOT drop more than 1 frame in 10 seconds (i.e less than 0.333 percent frame drop) for a 1080p 30 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128 kbps AAC audio playback."
2910      test_config_id: "1080p_30fps"
2911      required_values {
2912        key: "frame_drops_per_30sec"
2913        value {
2914          int_value: 3
2915        }
2916      }
2917      required_values {
2918        key: "frame_rate"
2919        value {
2920          double_value: 30.0
2921        }
2922      }
2923      required_values {
2924        key: "resolution"
2925        value {
2926          int_value: 1080
2927        }
2928      }
2929    }
2930  }
2931  specs {
2932    key: 31
2933    value {
2934      mpc: MEDIA_PERFORMANCE_CLASS_12
2935      specification: "MUST NOT drop more than 2 frames in 10 seconds (i.e less than 0.333 percent frame drop) for a 1080p 60 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128 kbps AAC audio playback."
2936      test_config_id: "1080p_60fps"
2937      required_values {
2938        key: "frame_drops_per_30sec"
2939        value {
2940          int_value: 6
2941        }
2942      }
2943      required_values {
2944        key: "frame_rate"
2945        value {
2946          double_value: 60.0
2947        }
2948      }
2949      required_values {
2950        key: "resolution"
2951        value {
2952          int_value: 1080
2953        }
2954      }
2955    }
2956  }
2957  specs {
2958    key: 33
2959    value {
2960      mpc: MEDIA_PERFORMANCE_CLASS_13
2961      specification: "MUST NOT drop more than 1 frame in 10 seconds (i.e less than 0.167 percent frame drop) for a 1080p 60 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128 kbps AAC audio playback."
2962      test_config_id: "1080p_60fps"
2963      required_values {
2964        key: "frame_drops_per_30sec"
2965        value {
2966          int_value: 3
2967        }
2968      }
2969      required_values {
2970        key: "frame_rate"
2971        value {
2972          double_value: 60.0
2973        }
2974      }
2975      required_values {
2976        key: "resolution"
2977        value {
2978          int_value: 1080
2979        }
2980      }
2981    }
2982  }
2983  specs {
2984    key: 34
2985    value {
2986      mpc: MEDIA_PERFORMANCE_CLASS_14
2987      specification: "MUST NOT drop more than 1 frame in 10 seconds (i.e less than 0.167 percent frame drop) for a 4K 60 fps video session under load."
2988      test_config_id: "4k_60fps"
2989      required_values {
2990        key: "frame_drops_per_30sec"
2991        value {
2992          int_value: 3
2993        }
2994      }
2995      required_values {
2996        key: "frame_rate"
2997        value {
2998          double_value: 60.0
2999        }
3000      }
3001      required_values {
3002        key: "resolution"
3003        value {
3004          int_value: 2160
3005        }
3006      }
3007    }
3008  }
3009  specs {
3010    key: 35
3011    value {
3012      mpc: MEDIA_PERFORMANCE_CLASS_15
3013      specification: "same"
3014      test_config_id: "4k_60fps"
3015      required_values {
3016        key: "frame_drops_per_30sec"
3017        value {
3018          int_value: 3
3019        }
3020      }
3021      required_values {
3022        key: "frame_rate"
3023        value {
3024          double_value: 60.0
3025        }
3026      }
3027      required_values {
3028        key: "resolution"
3029        value {
3030          int_value: 2160
3031        }
3032      }
3033    }
3034  }
3035}
3036requirements {
3037  id: "5.3/H-1-2"
3038  name: "Adaptive Playback Frame Drop"
3039  description: "Adaptive playback frame drop"
3040  test_configs: {
3041    key: "1080p_30fps"
3042    value: {
3043      description: "Tests adaptive playback at 1080p resolution and 30fps"
3044      proto_field_number: 43
3045    }
3046  }
3047  test_configs: {
3048    key: "1080p_60fps"
3049    value: {
3050      description: "Tests adaptive playback at 1080p resolution and 60fps"
3051      proto_field_number: 44
3052    }
3053  }
3054  test_configs: {
3055    key: "4k_60fps"
3056    value: {
3057      description: "Tests adaptive playback at 4k resolution and 60fps"
3058      proto_field_number: 45
3059    }
3060  }
3061  measurements: {
3062    key: "frame_drops_per_30sec"
3063    value: {
3064      description: "Frame dropped in 30 seconds"
3065      measurement_type: MEASUREMENT_TYPE_INT
3066      comparison: COMPARISON_LESS_THAN_OR_EQUAL
3067      proto_field_number: 3
3068    }
3069  }
3070  measurements: {
3071    key: "frame_rate"
3072    value: {
3073      description: "Frame rate the test was ran at."
3074      measurement_type: MEASUREMENT_TYPE_DOUBLE
3075      comparison: COMPARISON_CONFIG
3076      proto_field_number: 4
3077    }
3078  }
3079  measurements: {
3080    key: "resolution"
3081    value: {
3082      description: "Resolution the test was ran at."
3083      measurement_type: MEASUREMENT_TYPE_INT
3084      comparison: COMPARISON_CONFIG
3085      proto_field_number: 5
3086    }
3087  }
3088  specs {
3089    key: 30
3090    value {
3091      mpc: MEDIA_PERFORMANCE_CLASS_11
3092      specification: "MUST NOT drop more than 1 frame in 10 seconds during a video resolution change in a 30 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128Kbps AAC audio playback."
3093      test_config_id: "1080p_30fps"
3094      required_values {
3095        key: "frame_drops_per_30sec"
3096        value {
3097          int_value: 3
3098        }
3099      }
3100      required_values {
3101        key: "frame_rate"
3102        value {
3103          double_value: 30.0
3104        }
3105      }
3106      required_values {
3107        key: "resolution"
3108        value {
3109          int_value: 1080
3110        }
3111      }
3112    }
3113  }
3114  specs {
3115    key: 31
3116    value {
3117      mpc: MEDIA_PERFORMANCE_CLASS_12
3118      specification: "MUST NOT drop more than 2 frames in 10 seconds during a video resolution change in a 60 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128 kbps AAC audio playback."
3119      test_config_id: "1080p_60fps"
3120      required_values {
3121        key: "frame_drops_per_30sec"
3122        value {
3123          int_value: 6
3124        }
3125      }
3126      required_values {
3127        key: "frame_rate"
3128        value {
3129          double_value: 60.0
3130        }
3131      }
3132      required_values {
3133        key: "resolution"
3134        value {
3135          int_value: 1080
3136        }
3137      }
3138    }
3139  }
3140  specs {
3141    key: 33
3142    value {
3143      mpc: MEDIA_PERFORMANCE_CLASS_13
3144      specification: "MUST NOT drop more than 1 frame in 10 seconds during a video resolution change in a 60 fps video session under load. Load is defined as a concurrent 1080p to 720p video-only transcoding session using hardware video codecs, as well as a 128 kbps AAC audio playback."
3145      test_config_id: "1080p_60fps"
3146      required_values {
3147        key: "frame_drops_per_30sec"
3148        value {
3149          int_value: 3
3150        }
3151      }
3152      required_values {
3153        key: "frame_rate"
3154        value {
3155          double_value: 60.0
3156        }
3157      }
3158      required_values {
3159        key: "resolution"
3160        value {
3161          int_value: 1080
3162        }
3163      }
3164    }
3165  }
3166  specs {
3167    key: 34
3168    value {
3169      mpc: MEDIA_PERFORMANCE_CLASS_14
3170      specification: "MUST NOT drop more than 1 frame in 10 seconds during a video resolution change in a 60 fps video session under load for a 4K session."
3171      test_config_id: "4k_60fps"
3172      required_values {
3173        key: "frame_drops_per_30sec"
3174        value {
3175          int_value: 3
3176        }
3177      }
3178      required_values {
3179        key: "frame_rate"
3180        value {
3181          double_value: 60.0
3182        }
3183      }
3184      required_values {
3185        key: "resolution"
3186        value {
3187          int_value: 2160
3188        }
3189      }
3190    }
3191  }
3192  specs {
3193    key: 35
3194    value {
3195      mpc: MEDIA_PERFORMANCE_CLASS_15
3196      specification: "same"
3197      test_config_id: "4k_60fps"
3198      required_values {
3199        key: "frame_drops_per_30sec"
3200        value {
3201          int_value: 3
3202        }
3203      }
3204      required_values {
3205        key: "frame_rate"
3206        value {
3207          double_value: 60.0
3208        }
3209      }
3210      required_values {
3211        key: "resolution"
3212        value {
3213          int_value: 2160
3214        }
3215      }
3216    }
3217  }
3218}
3219requirements {
3220  id: "5.6/H-1-1"
3221  name: "Tap to Tone Latency"
3222  description: "Tap to tone latency"
3223  is_non_cts_test: true
3224  test_configs: {
3225    key: ""
3226    value: {
3227      description: "Default test config"
3228      proto_field_number: 46
3229    }
3230  }
3231  measurements: {
3232    key: "native_latency_ms"
3233    value: {
3234      description: "Native latency in milliseconds"
3235      measurement_type: MEASUREMENT_TYPE_DOUBLE
3236      comparison: COMPARISON_LESS_THAN_OR_EQUAL
3237      proto_field_number: 3
3238    }
3239  }
3240  measurements: {
3241    key: "java_latency_ms"
3242    value: {
3243      description: "Java latency in milliseconds"
3244      measurement_type: MEASUREMENT_TYPE_DOUBLE
3245      comparison: COMPARISON_LESS_THAN_OR_EQUAL
3246      proto_field_number: 4
3247    }
3248  }
3249  specs {
3250    key: 30
3251    value {
3252      mpc: MEDIA_PERFORMANCE_CLASS_11
3253      specification: "MUST have a tap-to-tone latency of less than 100 milliseconds using the OboeTester tap-to-tone test or CTS Verifier tap-to-tone test."
3254      required_values {
3255        key: "native_latency_ms"
3256        value {
3257          double_value: 100.0
3258        }
3259      }
3260      required_values {
3261        key: "java_latency_ms"
3262        value {
3263          double_value: 100.0
3264        }
3265      }
3266    }
3267  }
3268  specs {
3269    key: 31
3270    value {
3271      mpc: MEDIA_PERFORMANCE_CLASS_12
3272      specification: "same"
3273      required_values {
3274        key: "native_latency_ms"
3275        value {
3276          double_value: 100.0
3277        }
3278      }
3279      required_values {
3280        key: "java_latency_ms"
3281        value {
3282          double_value: 100.0
3283        }
3284      }
3285    }
3286  }
3287  specs {
3288    key: 33
3289    value {
3290      mpc: MEDIA_PERFORMANCE_CLASS_13
3291      specification: "MUST have a tap-to-tone latency of 80 milliseconds or less using the OboeTester tap-to-tone test or CTS Verifier tap-to-tone test."
3292      required_values {
3293        key: "native_latency_ms"
3294        value {
3295          double_value: 80.0
3296        }
3297      }
3298      required_values {
3299        key: "java_latency_ms"
3300        value {
3301          double_value: 80.0
3302        }
3303      }
3304    }
3305  }
3306  specs {
3307    key: 34
3308    value {
3309      mpc: MEDIA_PERFORMANCE_CLASS_14
3310      specification: "MUST have a tap-to-tone latency of 80 milliseconds or less using the CTS Verifier tap-to-tone test."
3311      required_values {
3312        key: "native_latency_ms"
3313        value {
3314          double_value: 80.0
3315        }
3316      }
3317      required_values {
3318        key: "java_latency_ms"
3319        value {
3320          double_value: 80.0
3321        }
3322      }
3323    }
3324  }
3325  specs {
3326    key: 35
3327    value {
3328      mpc: MEDIA_PERFORMANCE_CLASS_15
3329      specification: "same"
3330      required_values {
3331        key: "native_latency_ms"
3332        value {
3333          double_value: 80.0
3334        }
3335      }
3336      required_values {
3337        key: "java_latency_ms"
3338        value {
3339          double_value: 80.0
3340        }
3341      }
3342    }
3343  }
3344}
3345requirements {
3346  id: "5.6/H-1-2"
3347  name: "Round Trip Audio Latency"
3348  description: "Round-trip audio latency"
3349  is_non_cts_test: true
3350  test_configs: {
3351    key: ""
3352    value: {
3353      description: "Default test config"
3354      proto_field_number: 47
3355    }
3356  }
3357  measurements: {
3358    key: "round_trip_audio_latency_ms"
3359    value: {
3360      description: "Round-trip audio latency in milliseconds"
3361      measurement_type: MEASUREMENT_TYPE_DOUBLE
3362      comparison: COMPARISON_LESS_THAN_OR_EQUAL
3363      proto_field_number: 3
3364    }
3365  }
3366  specs {
3367    key: 33
3368    value {
3369      mpc: MEDIA_PERFORMANCE_CLASS_13
3370      specification: "MUST have a round-trip audio latency of 80 milliseconds or less over at least one supported data path."
3371      required_values {
3372        key: "round_trip_audio_latency_ms"
3373        value {
3374          double_value: 80.0
3375        }
3376      }
3377    }
3378  }
3379  specs {
3380    key: 34
3381    value {
3382      mpc: MEDIA_PERFORMANCE_CLASS_14
3383      specification: "same"
3384      required_values {
3385        key: "round_trip_audio_latency_ms"
3386        value {
3387          double_value: 80.0
3388        }
3389      }
3390    }
3391  }
3392  specs {
3393    key: 35
3394    value {
3395      mpc: MEDIA_PERFORMANCE_CLASS_15
3396      specification: "same"
3397      required_values {
3398        key: "round_trip_audio_latency_ms"
3399        value {
3400          double_value: 80.0
3401        }
3402      }
3403    }
3404  }
3405}
3406requirements {
3407  id: "5.6/H-1-3"
3408  name: "Twenty Four Bit Audio"
3409  description: "Wired headsets and USB audio devices support 24-bit audio"
3410  is_non_cts_test: true
3411  test_configs: {
3412    key: ""
3413    value: {
3414      description: "Default test config"
3415      proto_field_number: 48
3416    }
3417  }
3418  measurements: {
3419    key: "twenty_four_bit_audio_supported"
3420    value: {
3421      description: "Is 24-bit audio supported"
3422      measurement_type: MEASUREMENT_TYPE_BOOL
3423      comparison: COMPARISON_EQUAL
3424      proto_field_number: 3
3425    }
3426  }
3427  specs {
3428    key: 33
3429    value {
3430      mpc: MEDIA_PERFORMANCE_CLASS_13
3431      specification: "MUST support >=24-bit audio for stereo output over 3.5 mm audio jacks if present and over USB audio if supported through the entire data path for low latency and streaming configurations. For the low latency configuration, AAudio should be used by the app in low-latency callback mode. For the streaming configuration, a Java AudioTrack should be used by the app. In both the low latency and streaming configurations, the HAL output sink should accept either AUDIO_FORMAT_PCM_24_BIT, AUDIO_FORMAT_PCM_24_BIT_PACKED, AUDIO_FORMAT_PCM_32_BIT or AUDIO_FORMAT_PCM_FLOAT for its target output format."
3432      required_values {
3433        key: "twenty_four_bit_audio_supported"
3434        value {
3435          bool_value: true
3436        }
3437      }
3438    }
3439  }
3440  specs {
3441    key: 34
3442    value {
3443      mpc: MEDIA_PERFORMANCE_CLASS_14
3444      specification: "same"
3445      required_values {
3446        key: "twenty_four_bit_audio_supported"
3447        value {
3448          bool_value: true
3449        }
3450      }
3451    }
3452  }
3453  specs {
3454    key: 35
3455    value {
3456      mpc: MEDIA_PERFORMANCE_CLASS_15
3457      specification: "same"
3458      required_values {
3459        key: "twenty_four_bit_audio_supported"
3460        value {
3461          bool_value: true
3462        }
3463      }
3464    }
3465  }
3466}
3467requirements {
3468  id: "5.6/H-1-4"
3469  description: "- Wired headsets and USB audio devices"
3470  specs {
3471    key: 33
3472    value {
3473      mpc: MEDIA_PERFORMANCE_CLASS_13
3474      specification: "MUST support >=4 channel USB audio devices (This is used by DJ controllers for previewing songs.)"
3475    }
3476  }
3477  specs {
3478    key: 34
3479    value {
3480      mpc: MEDIA_PERFORMANCE_CLASS_14
3481      specification: "same"
3482    }
3483  }
3484  specs {
3485    key: 35
3486    value {
3487      mpc: MEDIA_PERFORMANCE_CLASS_15
3488      specification: "same"
3489    }
3490  }
3491}
3492requirements {
3493  id: "5.6/H-1-5"
3494  description: "- MIDI devices"
3495  specs {
3496    key: 33
3497    value {
3498      mpc: MEDIA_PERFORMANCE_CLASS_13
3499      specification: "MUST support class compliant MIDI devices and declare the MIDI feature flag."
3500    }
3501  }
3502  specs {
3503    key: 34
3504    value {
3505      mpc: MEDIA_PERFORMANCE_CLASS_14
3506      specification: "same"
3507    }
3508  }
3509  specs {
3510    key: 35
3511    value {
3512      mpc: MEDIA_PERFORMANCE_CLASS_15
3513      specification: "same"
3514    }
3515  }
3516}
3517requirements {
3518  id: "5.6/H-1-9"
3519  description: "- Multichannel audio mixing"
3520  specs {
3521    key: 34
3522    value {
3523      mpc: MEDIA_PERFORMANCE_CLASS_14
3524      specification: "MUST support at least 12 channel mixing. This implies the capability to open an AudioTrack with 7.1.4 channel mask and properly spatialise or downmix all channels to stereo."
3525    }
3526  }
3527  specs {
3528    key: 35
3529    value {
3530      mpc: MEDIA_PERFORMANCE_CLASS_15
3531      specification: "same"
3532    }
3533  }
3534}
3535requirements {
3536  id: "5.6/H-SR"
3537  specs {
3538    key: 34
3539    value {
3540      mpc: MEDIA_PERFORMANCE_CLASS_14
3541      specification: "Are STRONGLY RECOMMENDED to support 24 channel mixing with at least support for 9.1.6 and 22.2 channel masks."
3542    }
3543  }
3544  specs {
3545    key: 35
3546    value {
3547      mpc: MEDIA_PERFORMANCE_CLASS_15
3548      specification: "same"
3549    }
3550  }
3551}
3552requirements {
3553  id: "5.7/H-1-2"
3554  name: "Media Drm Security Level Hardware Secure All"
3555  description: "Hardware-backed trusted execution environment"
3556  test_configs: {
3557    key: ""
3558    value: {
3559      description: "Default test config"
3560      proto_field_number: 49
3561    }
3562  }
3563  measurements: {
3564    key: "number_crypto_hw_secure_all_support"
3565    value: {
3566      description: "Number of crypto hw secure all supported."
3567      measurement_type: MEASUREMENT_TYPE_INT
3568      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3569      proto_field_number: 3
3570    }
3571  }
3572  specs {
3573    key: 33
3574    value {
3575      mpc: MEDIA_PERFORMANCE_CLASS_13
3576      specification:
3577        "MUST support MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL with the below "
3578        "content decryption capabilities.\n"
3579        "Minimum Sample size        4 MiB\n"
3580        "Minimum Number of Subsamples - H264 or HEVC        32\n"
3581        "Minimum Number of Subsamples - VP9        9\n"
3582        "Minimum Number of Subsamples - AV1        288\n"
3583        "Minimum subsample buffer size        1 MiB\n"
3584        "Minimum Generic crypto buffer size        500 KiB\n"
3585        "Minimum Number of concurrent sessions        30\n"
3586        "Minimum Number of keys per session        20\n"
3587        "Minimum Total Number of Keys (all sessions)        80\n"
3588        "Minimum Total Number of DRM Keys (all sessions)        6\n"
3589        "Message Size        16 KiB\n"
3590        "Decrypted Frames per Second        60 fps"
3591      required_values {
3592        key: "number_crypto_hw_secure_all_support"
3593        value {
3594          int_value: 1
3595        }
3596      }
3597    }
3598  }
3599  specs {
3600    key: 34
3601    value {
3602      mpc: MEDIA_PERFORMANCE_CLASS_14
3603      specification: "same"
3604      required_values {
3605        key: "number_crypto_hw_secure_all_support"
3606        value {
3607          int_value: 1
3608        }
3609      }
3610    }
3611  }
3612  specs {
3613    key: 35
3614    value {
3615      mpc: MEDIA_PERFORMANCE_CLASS_15
3616      specification: "same"
3617      required_values {
3618        key: "number_crypto_hw_secure_all_support"
3619        value {
3620          int_value: 1
3621        }
3622      }
3623    }
3624  }
3625}
3626requirements {
3627  id: "7.5/H-1-1"
3628  name: "Primary Rear Camera Resolution and Frame Rate"
3629  description: "Primary rear camera resolution and frame rate"
3630  test_configs: {
3631    key: ""
3632    value: {
3633      description: "Default test config"
3634      proto_field_number: 50
3635    }
3636  }
3637  measurements: {
3638    key: "primary_camera_available"
3639    value: {
3640      description: "Is the primary camera available"
3641      measurement_type: MEASUREMENT_TYPE_BOOL
3642      comparison: COMPARISON_EQUAL
3643      proto_field_number: 3
3644    }
3645  }
3646  measurements: {
3647    key: "primary_camera_resolution"
3648    value: {
3649      description: "Resolution of the primary camera"
3650      measurement_type: MEASUREMENT_TYPE_LONG
3651      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3652      proto_field_number: 4
3653    }
3654  }
3655  measurements: {
3656    key: "primary_camera_video_size_req_satisfied"
3657    value: {
3658      description: "Video size requirement satisfied at 4k"
3659      measurement_type: MEASUREMENT_TYPE_BOOL
3660      comparison: COMPARISON_EQUAL
3661      proto_field_number: 5
3662    }
3663  }
3664  measurements: {
3665    key: "primary_camera_1080p_video_size_req_satisfied"
3666    value: {
3667      description: "Video size requirement satisfied at 1080p"
3668      measurement_type: MEASUREMENT_TYPE_BOOL
3669      comparison: COMPARISON_EQUAL
3670      proto_field_number: 6
3671    }
3672  }
3673  measurements: {
3674    key: "primary_camera_720p_video_size_req_satisfied"
3675    value: {
3676      description: "Video size requirement satisfied at 720p"
3677      measurement_type: MEASUREMENT_TYPE_BOOL
3678      comparison: COMPARISON_EQUAL
3679      proto_field_number: 7
3680    }
3681  }
3682  measurements: {
3683    key: "primary_camera_video_fps"
3684    value: {
3685      description: "Video fps at 4k"
3686      measurement_type: MEASUREMENT_TYPE_DOUBLE
3687      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3688      proto_field_number: 8
3689    }
3690  }
3691  measurements: {
3692    key: "primary_camera_1080p_video_fps"
3693    value: {
3694      description: "Video fps at 1080p"
3695      measurement_type: MEASUREMENT_TYPE_DOUBLE
3696      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3697      proto_field_number: 9
3698    }
3699  }
3700  measurements: {
3701    key: "primary_camera_720p_video_fps"
3702    value: {
3703      description: "Video fps at 720p"
3704      measurement_type: MEASUREMENT_TYPE_DOUBLE
3705      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3706      proto_field_number: 10
3707    }
3708  }
3709  specs {
3710    key: 30
3711    value {
3712      mpc: MEDIA_PERFORMANCE_CLASS_11
3713      specification: "MUST have a primary rear facing camera with a resolution of at least 12 megapixels supporting video capture at 4k@30fps. The primary rear-facing camera is the rear-facing camera with the lowest camera ID."
3714      required_values {
3715        key: "primary_camera_available"
3716        value {
3717          bool_value: true
3718        }
3719      }
3720      required_values {
3721        key: "primary_camera_resolution"
3722        value {
3723          long_value: 12000000
3724        }
3725      }
3726      required_values {
3727        key: "primary_camera_video_size_req_satisfied"
3728        value {
3729          bool_value: true
3730        }
3731      }
3732      required_values {
3733        key: "primary_camera_video_fps"
3734        value {
3735          double_value: 29.9
3736        }
3737      }
3738    }
3739  }
3740  specs {
3741    key: 31
3742    value {
3743      mpc: MEDIA_PERFORMANCE_CLASS_12
3744      specification: "same"
3745      required_values {
3746        key: "primary_camera_available"
3747        value {
3748          bool_value: true
3749        }
3750      }
3751      required_values {
3752        key: "primary_camera_resolution"
3753        value {
3754          long_value: 12000000
3755        }
3756      }
3757      required_values {
3758        key: "primary_camera_video_size_req_satisfied"
3759        value {
3760          bool_value: true
3761        }
3762      }
3763      required_values {
3764        key: "primary_camera_video_fps"
3765        value {
3766          double_value: 29.9
3767        }
3768      }
3769    }
3770  }
3771  specs {
3772    key: 33
3773    value {
3774      mpc: MEDIA_PERFORMANCE_CLASS_13
3775      specification: "same"
3776      required_values {
3777        key: "primary_camera_available"
3778        value {
3779          bool_value: true
3780        }
3781      }
3782      required_values {
3783        key: "primary_camera_resolution"
3784        value {
3785          long_value: 12000000
3786        }
3787      }
3788      required_values {
3789        key: "primary_camera_video_size_req_satisfied"
3790        value {
3791          bool_value: true
3792        }
3793      }
3794      required_values {
3795        key: "primary_camera_video_fps"
3796        value {
3797          double_value: 29.9
3798        }
3799      }
3800    }
3801  }
3802  specs {
3803    key: 34
3804    value {
3805      mpc: MEDIA_PERFORMANCE_CLASS_14
3806      specification: "same"
3807      required_values {
3808        key: "primary_camera_available"
3809        value {
3810          bool_value: true
3811        }
3812      }
3813      required_values {
3814        key: "primary_camera_resolution"
3815        value {
3816          long_value: 12000000
3817        }
3818      }
3819      required_values {
3820        key: "primary_camera_video_size_req_satisfied"
3821        value {
3822          bool_value: true
3823        }
3824      }
3825      required_values {
3826        key: "primary_camera_video_fps"
3827        value {
3828          double_value: 29.9
3829        }
3830      }
3831    }
3832  }
3833  specs {
3834    key: 35
3835    value {
3836      mpc: MEDIA_PERFORMANCE_CLASS_15
3837      specification: "MUST have a primary rear facing camera with a resolution of at least 12 megapixels supporting video capture at 4k@30fps, 1080p@60fps, and 720p@60fps. The primary rear-facing camera is the rear-facing camera with the lowest camera ID."
3838      required_values {
3839        key: "primary_camera_available"
3840        value {
3841          bool_value: true
3842        }
3843      }
3844      required_values {
3845        key: "primary_camera_resolution"
3846        value {
3847          long_value: 12000000
3848        }
3849      }
3850      required_values {
3851        key: "primary_camera_video_size_req_satisfied"
3852        value {
3853          bool_value: true
3854        }
3855      }
3856      required_values {
3857        key: "primary_camera_1080p_video_size_req_satisfied"
3858        value {
3859          bool_value: true
3860        }
3861      }
3862      required_values {
3863        key: "primary_camera_720p_video_size_req_satisfied"
3864        value {
3865          bool_value: true
3866        }
3867      }
3868      required_values {
3869        key: "primary_camera_video_fps"
3870        value {
3871          double_value: 29.9
3872        }
3873      }
3874      required_values {
3875        key: "primary_camera_1080p_video_fps"
3876        value {
3877          double_value: 59.9
3878        }
3879      }
3880      required_values {
3881        key: "primary_camera_720p_video_fps"
3882        value {
3883          double_value: 59.9
3884        }
3885      }
3886    }
3887  }
3888}
3889requirements {
3890  id: "7.5/H-1-2"
3891  name: "Primary Front Camera Resolution and Frame Rate"
3892  description: "Primary front camera resolution and frame rate"
3893  test_configs: {
3894    key: ""
3895    value: {
3896      description: "Default test config"
3897      proto_field_number: 51
3898    }
3899  }
3900  measurements: {
3901    key: "primary_camera_available"
3902    value: {
3903      description: "Is the primary camera available"
3904      measurement_type: MEASUREMENT_TYPE_BOOL
3905      comparison: COMPARISON_EQUAL
3906      proto_field_number: 3
3907    }
3908  }
3909  measurements: {
3910    key: "primary_camera_resolution"
3911    value: {
3912      description: "Resolution of the primary camera"
3913      measurement_type: MEASUREMENT_TYPE_LONG
3914      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3915      proto_field_number: 4
3916    }
3917  }
3918  measurements: {
3919    key: "primary_camera_video_size_req_satisfied"
3920    value: {
3921      description: "Video size requirement satisfied"
3922      measurement_type: MEASUREMENT_TYPE_BOOL
3923      comparison: COMPARISON_EQUAL
3924      proto_field_number: 5
3925    }
3926  }
3927  measurements: {
3928    key: "primary_camera_video_fps"
3929    value: {
3930      description: "Video fps"
3931      measurement_type: MEASUREMENT_TYPE_DOUBLE
3932      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
3933      proto_field_number: 6
3934    }
3935  }
3936  specs {
3937    key: 30
3938    value {
3939      mpc: MEDIA_PERFORMANCE_CLASS_11
3940      specification: "MUST have a primary front facing camera with a resolution of at least 4 megapixels supporting video capture at 1080p@30fps. The primary front-facing camera is the front-facing camera with the lowest camera ID."
3941      required_values {
3942        key: "primary_camera_available"
3943        value {
3944          bool_value: true
3945        }
3946      }
3947      required_values {
3948        key: "primary_camera_resolution"
3949        value {
3950          long_value: 4000000
3951        }
3952      }
3953      required_values {
3954        key: "primary_camera_video_size_req_satisfied"
3955        value {
3956          bool_value: true
3957        }
3958      }
3959      required_values {
3960        key: "primary_camera_video_fps"
3961        value {
3962          double_value: 29.9
3963        }
3964      }
3965    }
3966  }
3967  specs {
3968    key: 31
3969    value {
3970      mpc: MEDIA_PERFORMANCE_CLASS_12
3971      specification: "MUST have a primary front facing camera with a resolution of at least 5 megapixels and support video capture at 1080p@30fps. The primary front-facing camera is the front-facing camera with the lowest camera ID."
3972      required_values {
3973        key: "primary_camera_available"
3974        value {
3975          bool_value: true
3976        }
3977      }
3978      required_values {
3979        key: "primary_camera_resolution"
3980        value {
3981          long_value: 5000000
3982        }
3983      }
3984      required_values {
3985        key: "primary_camera_video_size_req_satisfied"
3986        value {
3987          bool_value: true
3988        }
3989      }
3990      required_values {
3991        key: "primary_camera_video_fps"
3992        value {
3993          double_value: 29.9
3994        }
3995      }
3996    }
3997  }
3998  specs {
3999    key: 33
4000    value {
4001      mpc: MEDIA_PERFORMANCE_CLASS_13
4002      specification: "same"
4003      required_values {
4004        key: "primary_camera_available"
4005        value {
4006          bool_value: true
4007        }
4008      }
4009      required_values {
4010        key: "primary_camera_resolution"
4011        value {
4012          long_value: 5000000
4013        }
4014      }
4015      required_values {
4016        key: "primary_camera_video_size_req_satisfied"
4017        value {
4018          bool_value: true
4019        }
4020      }
4021      required_values {
4022        key: "primary_camera_video_fps"
4023        value {
4024          double_value: 29.9
4025        }
4026      }
4027    }
4028  }
4029  specs {
4030    key: 34
4031    value {
4032      mpc: MEDIA_PERFORMANCE_CLASS_14
4033      specification: "MUST have a primary front-facing camera with a resolution of at least 6 megapixels and support video capture at 1080p@30fps. The primary front-facing camera is the front-facing camera with the lowest camera ID."
4034      required_values {
4035        key: "primary_camera_available"
4036        value {
4037          bool_value: true
4038        }
4039      }
4040      required_values {
4041        key: "primary_camera_resolution"
4042        value {
4043          long_value: 5000000
4044        }
4045      }
4046      required_values {
4047        key: "primary_camera_video_size_req_satisfied"
4048        value {
4049          bool_value: true
4050        }
4051      }
4052      required_values {
4053        key: "primary_camera_video_fps"
4054        value {
4055          double_value: 29.9
4056        }
4057      }
4058    }
4059  }
4060  specs {
4061    key: 35
4062    value {
4063      mpc: MEDIA_PERFORMANCE_CLASS_15
4064      specification: "same"
4065      required_values {
4066        key: "primary_camera_available"
4067        value {
4068          bool_value: true
4069        }
4070      }
4071      required_values {
4072        key: "primary_camera_resolution"
4073        value {
4074          long_value: 5000000
4075        }
4076      }
4077      required_values {
4078        key: "primary_camera_video_size_req_satisfied"
4079        value {
4080          bool_value: true
4081        }
4082      }
4083      required_values {
4084        key: "primary_camera_video_fps"
4085        value {
4086          double_value: 29.9
4087        }
4088      }
4089    }
4090  }
4091}
4092requirements {
4093  id: "7.5/H-1-3"
4094  name: "Camera Hardware Level"
4095  description: "Camera hardware level is FULL or better hardware level"
4096  test_configs: {
4097    key: ""
4098    value: {
4099      description: "Default test config"
4100      proto_field_number: 52
4101    }
4102  }
4103  measurements: {
4104    key: "rear_primary_camera_hwl_level"
4105    value: {
4106      description: "Hardware level of the primary camera"
4107      measurement_type: MEASUREMENT_TYPE_INT
4108      comparison: COMPARISON_CAMERA_HARDWARE_LEVEL_GREATER_THAN_OR_EQUAL
4109      proto_field_number: 3
4110    }
4111  }
4112  measurements: {
4113    key: "front_primary_camera_hwl_level"
4114    value: {
4115      description: "Hardware level of the secondary camera"
4116      measurement_type: MEASUREMENT_TYPE_INT
4117      comparison: COMPARISON_CAMERA_HARDWARE_LEVEL_GREATER_THAN_OR_EQUAL
4118      proto_field_number: 4
4119    }
4120  }
4121  specs {
4122    key: 30
4123    value {
4124      mpc: MEDIA_PERFORMANCE_CLASS_11
4125      specification: "MUST support android.info.supportedHardwareLevel property as FULL or better for back primary and LIMITED or better for front primary camera."
4126      required_values {
4127        key: "rear_primary_camera_hwl_level"
4128        value {
4129          int_value: 1
4130        }
4131      }
4132      required_values {
4133        key: "front_primary_camera_hwl_level"
4134        value {
4135          int_value: 0
4136        }
4137      }
4138    }
4139  }
4140  specs {
4141    key: 31
4142    value {
4143      mpc: MEDIA_PERFORMANCE_CLASS_12
4144      specification: "MUST support android.info.supportedHardwareLevel property as FULL or better for both primary cameras."
4145      required_values {
4146        key: "rear_primary_camera_hwl_level"
4147        value {
4148          int_value: 1
4149        }
4150      }
4151      required_values {
4152        key: "front_primary_camera_hwl_level"
4153        value {
4154          int_value: 1
4155        }
4156      }
4157    }
4158  }
4159  specs {
4160    key: 33
4161    value {
4162      mpc: MEDIA_PERFORMANCE_CLASS_13
4163      specification: "same"
4164      required_values {
4165        key: "rear_primary_camera_hwl_level"
4166        value {
4167          int_value: 1
4168        }
4169      }
4170      required_values {
4171        key: "front_primary_camera_hwl_level"
4172        value {
4173          int_value: 1
4174        }
4175      }
4176    }
4177  }
4178  specs {
4179    key: 34
4180    value {
4181      mpc: MEDIA_PERFORMANCE_CLASS_14
4182      specification: "same"
4183      required_values {
4184        key: "rear_primary_camera_hwl_level"
4185        value {
4186          int_value: 1
4187        }
4188      }
4189      required_values {
4190        key: "front_primary_camera_hwl_level"
4191        value {
4192          int_value: 1
4193        }
4194      }
4195    }
4196  }
4197  specs {
4198    key: 35
4199    value {
4200      mpc: MEDIA_PERFORMANCE_CLASS_15
4201      specification: "same"
4202      required_values {
4203        key: "rear_primary_camera_hwl_level"
4204        value {
4205          int_value: 1
4206        }
4207      }
4208      required_values {
4209        key: "front_primary_camera_hwl_level"
4210        value {
4211          int_value: 1
4212        }
4213      }
4214    }
4215  }
4216}
4217requirements {
4218  id: "7.5/H-1-4"
4219  name: "Timestamp Source Realtime"
4220  description: "Timestamp source is realtime"
4221  test_configs: {
4222    key: ""
4223    value: {
4224      description: "Default test config"
4225      proto_field_number: 53
4226    }
4227  }
4228  measurements: {
4229    key: "rear_primary_camera_timestamp_source"
4230    value: {
4231      description: "Is the rear primary camera timestamp source realtime"
4232      measurement_type: MEASUREMENT_TYPE_INT
4233      comparison: COMPARISON_EQUAL
4234      proto_field_number: 3
4235    }
4236  }
4237  measurements: {
4238    key: "front_primary_camera_timestamp_source"
4239    value: {
4240      description: "Is the front primary camera timestamp source realtime"
4241      measurement_type: MEASUREMENT_TYPE_INT
4242      comparison: COMPARISON_EQUAL
4243      proto_field_number: 4
4244    }
4245  }
4246  specs {
4247    key: 30
4248    value {
4249      mpc: MEDIA_PERFORMANCE_CLASS_11
4250      specification: "MUST support CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME for both primary cameras."
4251      required_values {
4252        key: "rear_primary_camera_timestamp_source"
4253        value {
4254          int_value: 1
4255        }
4256      }
4257      required_values {
4258        key: "front_primary_camera_timestamp_source"
4259        value {
4260          int_value: 1
4261        }
4262      }
4263    }
4264  }
4265  specs {
4266    key: 31
4267    value {
4268      mpc: MEDIA_PERFORMANCE_CLASS_12
4269      specification: "same"
4270      required_values {
4271        key: "rear_primary_camera_timestamp_source"
4272        value {
4273          int_value: 1
4274        }
4275      }
4276      required_values {
4277        key: "front_primary_camera_timestamp_source"
4278        value {
4279          int_value: 1
4280        }
4281      }
4282    }
4283  }
4284  specs {
4285    key: 33
4286    value {
4287      mpc: MEDIA_PERFORMANCE_CLASS_13
4288      specification: "same"
4289      required_values {
4290        key: "rear_primary_camera_timestamp_source"
4291        value {
4292          int_value: 1
4293        }
4294      }
4295      required_values {
4296        key: "front_primary_camera_timestamp_source"
4297        value {
4298          int_value: 1
4299        }
4300      }
4301    }
4302  }
4303  specs {
4304    key: 34
4305    value {
4306      mpc: MEDIA_PERFORMANCE_CLASS_14
4307      specification: "same"
4308      required_values {
4309        key: "rear_primary_camera_timestamp_source"
4310        value {
4311          int_value: 1
4312        }
4313      }
4314      required_values {
4315        key: "front_primary_camera_timestamp_source"
4316        value {
4317          int_value: 1
4318        }
4319      }
4320    }
4321  }
4322  specs {
4323    key: 35
4324    value {
4325      mpc: MEDIA_PERFORMANCE_CLASS_15
4326      specification: "same"
4327      required_values {
4328        key: "rear_primary_camera_timestamp_source"
4329        value {
4330          int_value: 1
4331        }
4332      }
4333      required_values {
4334        key: "front_primary_camera_timestamp_source"
4335        value {
4336          int_value: 1
4337        }
4338      }
4339    }
4340  }
4341}
4342requirements {
4343  id: "7.5/H-1-5"
4344  name: "Camera Capture Latency"
4345  description: "Capture latencies"
4346  is_non_cts_test: true
4347  test_configs: {
4348    key: ""
4349    value: {
4350      description: "Default test config"
4351      proto_field_number: 54
4352    }
4353  }
4354  measurements: {
4355    key: "rear_camera_latency"
4356    value: {
4357      description: "Capture latency in ms for the rear primary camera"
4358      measurement_type: MEASUREMENT_TYPE_FLOAT
4359      comparison: COMPARISON_LESS_THAN_OR_EQUAL
4360      proto_field_number: 3
4361    }
4362  }
4363  measurements: {
4364    key: "front_camera_latency"
4365    value: {
4366      description: "Capture latency in ms for the front primary camera"
4367      measurement_type: MEASUREMENT_TYPE_FLOAT
4368      comparison: COMPARISON_LESS_THAN_OR_EQUAL
4369      proto_field_number: 4
4370    }
4371  }
4372  specs {
4373    key: 30
4374    value {
4375      mpc: MEDIA_PERFORMANCE_CLASS_11
4376      specification: "MUST have camera2 JPEG capture latency < 1000 ms for 1080p resolution as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras."
4377      required_values {
4378        key: "rear_camera_latency"
4379        value {
4380          float_value: 1000
4381        }
4382      }
4383      required_values {
4384        key: "front_camera_latency"
4385        value {
4386          float_value: 1000
4387        }
4388      }
4389    }
4390  }
4391  specs {
4392    key: 31
4393    value {
4394      mpc: MEDIA_PERFORMANCE_CLASS_12
4395      specification: "same"
4396      required_values {
4397        key: "rear_camera_latency"
4398        value {
4399          float_value: 1000
4400        }
4401      }
4402      required_values {
4403        key: "front_camera_latency"
4404        value {
4405          float_value: 1000
4406        }
4407      }
4408    }
4409  }
4410  specs {
4411    key: 33
4412    value {
4413      mpc: MEDIA_PERFORMANCE_CLASS_13
4414      specification: "same"
4415      required_values {
4416        key: "rear_camera_latency"
4417        value {
4418          float_value: 1000
4419        }
4420      }
4421      required_values {
4422        key: "front_camera_latency"
4423        value {
4424          float_value: 1000
4425        }
4426      }
4427    }
4428  }
4429  specs {
4430    key: 34
4431    value {
4432      mpc: MEDIA_PERFORMANCE_CLASS_14
4433      specification: "same"
4434      required_values {
4435        key: "rear_camera_latency"
4436        value {
4437          float_value: 1000
4438        }
4439      }
4440      required_values {
4441        key: "front_camera_latency"
4442        value {
4443          float_value: 1000
4444        }
4445      }
4446    }
4447  }
4448  specs {
4449    key: 35
4450    value {
4451      mpc: MEDIA_PERFORMANCE_CLASS_15
4452      specification: "same"
4453      required_values {
4454        key: "rear_camera_latency"
4455        value {
4456          float_value: 1000
4457        }
4458      }
4459      required_values {
4460        key: "front_camera_latency"
4461        value {
4462          float_value: 1000
4463        }
4464      }
4465    }
4466  }
4467}
4468requirements {
4469  id: "7.5/H-1-6"
4470  name: "Camera Startup Latency"
4471  description: "Startup latencies"
4472  is_non_cts_test: true
4473  test_configs: {
4474    key: ""
4475    value: {
4476      description: "Default test config"
4477      proto_field_number: 55
4478    }
4479  }
4480  measurements: {
4481    key: "rear_camera_latency"
4482    value: {
4483      description: "Startup latency in ms for the rear primary camera"
4484      measurement_type: MEASUREMENT_TYPE_FLOAT
4485      comparison: COMPARISON_LESS_THAN_OR_EQUAL
4486      proto_field_number: 3
4487    }
4488  }
4489  measurements: {
4490    key: "front_camera_latency"
4491    value: {
4492      description: "Startup latency in ms for the front primary camera"
4493      measurement_type: MEASUREMENT_TYPE_FLOAT
4494      comparison: COMPARISON_LESS_THAN_OR_EQUAL
4495      proto_field_number: 4
4496    }
4497  }
4498  specs {
4499    key: 30
4500    value {
4501      mpc: MEDIA_PERFORMANCE_CLASS_11
4502      specification: "MUST have camera2 startup latency (open camera to first preview frame) < 600 ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras."
4503      required_values {
4504        key: "rear_camera_latency"
4505        value {
4506          float_value: 600
4507        }
4508      }
4509      required_values {
4510        key: "front_camera_latency"
4511        value {
4512          float_value: 600
4513        }
4514      }
4515    }
4516  }
4517  specs {
4518    key: 31
4519    value {
4520      mpc: MEDIA_PERFORMANCE_CLASS_12
4521      specification: "same"
4522      required_values {
4523        key: "rear_camera_latency"
4524        value {
4525          float_value: 600
4526        }
4527      }
4528      required_values {
4529        key: "front_camera_latency"
4530        value {
4531          float_value: 600
4532        }
4533      }
4534    }
4535  }
4536  specs {
4537    key: 33
4538    value {
4539      mpc: MEDIA_PERFORMANCE_CLASS_13
4540      specification: "MUST have camera2 startup latency (open camera to first preview frame) < 500 ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras."
4541      required_values {
4542        key: "rear_camera_latency"
4543        value {
4544          float_value: 500
4545        }
4546      }
4547      required_values {
4548        key: "front_camera_latency"
4549        value {
4550          float_value: 500
4551        }
4552      }
4553    }
4554  }
4555  specs {
4556    key: 34
4557    value {
4558      mpc: MEDIA_PERFORMANCE_CLASS_14
4559      specification: "same"
4560      required_values {
4561        key: "rear_camera_latency"
4562        value {
4563          float_value: 500
4564        }
4565      }
4566      required_values {
4567        key: "front_camera_latency"
4568        value {
4569          float_value: 500
4570        }
4571      }
4572    }
4573  }
4574  specs {
4575    key: 35
4576    value {
4577      mpc: MEDIA_PERFORMANCE_CLASS_15
4578      specification: "same"
4579      required_values {
4580        key: "rear_camera_latency"
4581        value {
4582          float_value: 500
4583        }
4584      }
4585      required_values {
4586        key: "front_camera_latency"
4587        value {
4588          float_value: 500
4589        }
4590      }
4591    }
4592  }
4593}
4594requirements {
4595  id: "7.5/H-1-8"
4596  name: "Camera RAW capability"
4597  description: "RAW capabilities"
4598  test_configs: {
4599    key: ""
4600    value: {
4601      description: "Default test config"
4602      proto_field_number: 56
4603    }
4604  }
4605  measurements: {
4606    key: "rear_camera_raw_supported"
4607    value: {
4608      description: "Is the rear primary camera RAW capability supported"
4609      measurement_type: MEASUREMENT_TYPE_BOOL
4610      comparison: COMPARISON_EQUAL
4611      proto_field_number: 3
4612    }
4613  }
4614  specs {
4615    key: 31
4616    value {
4617      mpc: MEDIA_PERFORMANCE_CLASS_12
4618      specification: "MUST support CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW and android.graphics.ImageFormat.RAW_SENSOR for the primary back camera."
4619      required_values {
4620        key: "rear_camera_raw_supported"
4621        value {
4622          bool_value: true
4623        }
4624      }
4625    }
4626  }
4627  specs {
4628    key: 33
4629    value {
4630      mpc: MEDIA_PERFORMANCE_CLASS_13
4631      specification: "same"
4632      required_values {
4633        key: "rear_camera_raw_supported"
4634        value {
4635          bool_value: true
4636        }
4637      }
4638    }
4639  }
4640  specs {
4641    key: 34
4642    value {
4643      mpc: MEDIA_PERFORMANCE_CLASS_14
4644      specification: "same"
4645      required_values {
4646        key: "rear_camera_raw_supported"
4647        value {
4648          bool_value: true
4649        }
4650      }
4651    }
4652  }
4653  specs {
4654    key: 35
4655    value {
4656      mpc: MEDIA_PERFORMANCE_CLASS_15
4657      specification: "same"
4658      required_values {
4659        key: "rear_camera_raw_supported"
4660        value {
4661          bool_value: true
4662        }
4663      }
4664    }
4665  }
4666}
4667requirements {
4668  id: "7.5/H-1-9"
4669  name: "Camera Slow Motion"
4670  description: "Slow-mo recording"
4671  test_configs: {
4672    key: ""
4673    value: {
4674      description: "Default test config"
4675      proto_field_number: 57
4676    }
4677  }
4678  measurements: {
4679    key: "rear_camera_240fps_supported"
4680    value: {
4681      description: "Is the rear primary camera slow motion supported"
4682      measurement_type: MEASUREMENT_TYPE_BOOL
4683      comparison: COMPARISON_EQUAL
4684      proto_field_number: 3
4685    }
4686  }
4687  specs {
4688    key: 33
4689    value {
4690      mpc: MEDIA_PERFORMANCE_CLASS_13
4691      specification: "MUST have a rear-facing primary camera supporting 720p or 1080p @ 240fps."
4692      required_values {
4693        key: "rear_camera_240fps_supported"
4694        value {
4695          bool_value: true
4696        }
4697      }
4698    }
4699  }
4700  specs {
4701    key: 34
4702    value {
4703      mpc: MEDIA_PERFORMANCE_CLASS_14
4704      specification: "same"
4705      required_values {
4706        key: "rear_camera_240fps_supported"
4707        value {
4708          bool_value: true
4709        }
4710      }
4711    }
4712  }
4713  specs {
4714    key: 35
4715    value {
4716      mpc: MEDIA_PERFORMANCE_CLASS_15
4717      specification: "same"
4718      required_values {
4719        key: "rear_camera_240fps_supported"
4720        value {
4721          bool_value: true
4722        }
4723      }
4724    }
4725  }
4726}
4727requirements {
4728  id: "7.5/H-1-10"
4729  name: "Camera Ultrawide Zoom Ratio"
4730  description: "Minimum zoom ratio for ultrawide cameras"
4731  test_configs: {
4732    key: ""
4733    value: {
4734      description: "Default test config"
4735      proto_field_number: 58
4736    }
4737  }
4738  measurements: {
4739    key: "rear_camera_ultrawide_zoom_req_met"
4740    value: {
4741      description: "Zoom ratio for rear primary camera is met"
4742      measurement_type: MEASUREMENT_TYPE_BOOL
4743      comparison: COMPARISON_EQUAL
4744      proto_field_number: 3
4745    }
4746  }
4747  measurements: {
4748    key: "front_camera_ultrawide_zoom_req_met"
4749    value: {
4750      description: "Zoom ratio for front primary camera is met"
4751      measurement_type: MEASUREMENT_TYPE_BOOL
4752      comparison: COMPARISON_EQUAL
4753      proto_field_number: 4
4754    }
4755  }
4756  specs {
4757    key: 33
4758    value {
4759      mpc: MEDIA_PERFORMANCE_CLASS_13
4760      specification: "MUST have min ZOOM_RATIO < 1.0 for the primary cameras if there is an ultrawide RGB camera facing the same direction."
4761      required_values {
4762        key: "rear_camera_ultrawide_zoom_req_met"
4763        value {
4764          bool_value: true
4765        }
4766      }
4767      required_values {
4768        key: "front_camera_ultrawide_zoom_req_met"
4769        value {
4770          bool_value: true
4771        }
4772      }
4773    }
4774  }
4775  specs {
4776    key: 34
4777    value {
4778      mpc: MEDIA_PERFORMANCE_CLASS_14
4779      specification: "same"
4780      required_values {
4781        key: "rear_camera_ultrawide_zoom_req_met"
4782        value {
4783          bool_value: true
4784        }
4785      }
4786      required_values {
4787        key: "front_camera_ultrawide_zoom_req_met"
4788        value {
4789          bool_value: true
4790        }
4791      }
4792    }
4793  }
4794  specs {
4795    key: 35
4796    value {
4797      mpc: MEDIA_PERFORMANCE_CLASS_15
4798      specification: "same"
4799      required_values {
4800        key: "rear_camera_ultrawide_zoom_req_met"
4801        value {
4802          bool_value: true
4803        }
4804      }
4805      required_values {
4806        key: "front_camera_ultrawide_zoom_req_met"
4807        value {
4808          bool_value: true
4809        }
4810      }
4811    }
4812  }
4813}
4814requirements {
4815  id: "7.5/H-1-11"
4816  name: "Camera Concurrent Rear Front Streaming"
4817  description: "Concurrent camera front-back streaming"
4818  test_configs: {
4819    key: ""
4820    value: {
4821      description: "Default test config"
4822      proto_field_number: 59
4823    }
4824  }
4825  measurements: {
4826    key: "rear_front_concurrent_camera"
4827    value: {
4828      description: "Is the rear primary camera concurrent front-back streaming supported"
4829      measurement_type: MEASUREMENT_TYPE_BOOL
4830      comparison: COMPARISON_EQUAL
4831      proto_field_number: 3
4832    }
4833  }
4834  specs {
4835    key: 33
4836    value {
4837      mpc: MEDIA_PERFORMANCE_CLASS_13
4838      specification: "MUST implement concurrent front-back streaming on primary cameras."
4839      required_values {
4840        key: "rear_front_concurrent_camera"
4841        value {
4842          bool_value: true
4843        }
4844      }
4845    }
4846  }
4847  specs {
4848    key: 34
4849    value {
4850      mpc: MEDIA_PERFORMANCE_CLASS_14
4851      specification: "same"
4852      required_values {
4853        key: "rear_front_concurrent_camera"
4854        value {
4855          bool_value: true
4856        }
4857      }
4858    }
4859  }
4860  specs {
4861    key: 35
4862    value {
4863      mpc: MEDIA_PERFORMANCE_CLASS_15
4864      specification: "same"
4865      required_values {
4866        key: "rear_front_concurrent_camera"
4867        value {
4868          bool_value: true
4869        }
4870      }
4871    }
4872  }
4873}
4874requirements {
4875  id: "7.5/H-1-12"
4876  name: "Camera Preview Stabilization"
4877  description: "Preview stabilization for primary rear camera"
4878  test_configs: {
4879    key: ""
4880    value: {
4881      description: "Default test config"
4882      proto_field_number: 60
4883    }
4884  }
4885  measurements: {
4886    key: "rear_camera_preview_stabilization_supported"
4887    value: {
4888      description: "Is the rear primary camera preview stabilization supported"
4889      measurement_type: MEASUREMENT_TYPE_BOOL
4890      comparison: COMPARISON_EQUAL
4891      proto_field_number: 3
4892    }
4893  }
4894  specs {
4895    key: 33
4896    value {
4897      mpc: MEDIA_PERFORMANCE_CLASS_13
4898      specification: "MUST support CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION for the primary back camera."
4899      required_values {
4900        key: "rear_camera_preview_stabilization_supported"
4901        value {
4902          bool_value: true
4903        }
4904      }
4905    }
4906  }
4907  specs {
4908    key: 34
4909    value {
4910      mpc: MEDIA_PERFORMANCE_CLASS_14
4911      specification: "same"
4912      required_values {
4913        key: "rear_camera_preview_stabilization_supported"
4914        value {
4915          bool_value: true
4916        }
4917      }
4918    }
4919  }
4920  specs {
4921    key: 35
4922    value {
4923      mpc: MEDIA_PERFORMANCE_CLASS_15
4924      specification: "same"
4925      required_values {
4926        key: "rear_camera_preview_stabilization_supported"
4927        value {
4928          bool_value: true
4929        }
4930      }
4931    }
4932  }
4933}
4934requirements {
4935  id: "7.5/H-1-13"
4936  name: "Camera Logical Multi Camera"
4937  description: "Logical multi-camera"
4938  test_configs: {
4939    key: ""
4940    value: {
4941      description: "Default test config"
4942      proto_field_number: 61
4943    }
4944  }
4945  measurements: {
4946    key: "rear_camera_logical_multi_camera_req_met"
4947    value: {
4948      description: "Is the rear primary camera logical multi-camera supported"
4949      measurement_type: MEASUREMENT_TYPE_BOOL
4950      comparison: COMPARISON_EQUAL
4951      proto_field_number: 3
4952    }
4953  }
4954  specs {
4955    key: 33
4956    value {
4957      mpc: MEDIA_PERFORMANCE_CLASS_13
4958      specification: "MUST support LOGICAL_MULTI_CAMERA capability for the primary rear-facing camera if there are greater than 1 RGB rear-facing cameras."
4959      required_values {
4960        key: "rear_camera_logical_multi_camera_req_met"
4961        value {
4962          bool_value: true
4963        }
4964      }
4965    }
4966  }
4967  specs {
4968    key: 34
4969    value {
4970      mpc: MEDIA_PERFORMANCE_CLASS_14
4971      specification: "same"
4972      required_values {
4973        key: "rear_camera_logical_multi_camera_req_met"
4974        value {
4975          bool_value: true
4976        }
4977      }
4978    }
4979  }
4980  specs {
4981    key: 35
4982    value {
4983      mpc: MEDIA_PERFORMANCE_CLASS_15
4984      specification: "same"
4985      required_values {
4986        key: "rear_camera_logical_multi_camera_req_met"
4987        value {
4988          bool_value: true
4989        }
4990      }
4991    }
4992  }
4993}
4994requirements {
4995  id: "7.5/H-1-14"
4996  name: "Camera Stream Use Case"
4997  description: "Stream use case for primary cameras"
4998  test_configs: {
4999    key: ""
5000    value: {
5001      description: "Default test config"
5002      proto_field_number: 62
5003    }
5004  }
5005  measurements: {
5006    key: "rear_camera_stream_usecase_supported"
5007    value: {
5008      description: "Is the rear primary camera stream use case supported"
5009      measurement_type: MEASUREMENT_TYPE_BOOL
5010      comparison: COMPARISON_EQUAL
5011      proto_field_number: 3
5012    }
5013  }
5014  measurements: {
5015    key: "front_camera_stream_usecase_supported"
5016    value: {
5017      description: "Is the front primary camera stream use case supported"
5018      measurement_type: MEASUREMENT_TYPE_BOOL
5019      comparison: COMPARISON_EQUAL
5020      proto_field_number: 4
5021    }
5022  }
5023  specs {
5024    key: 33
5025    value {
5026      mpc: MEDIA_PERFORMANCE_CLASS_13
5027      specification: "MUST support STREAM_USE_CASE capability for both primary front and primary back camera."
5028      required_values {
5029        key: "rear_camera_stream_usecase_supported"
5030        value {
5031          bool_value: true
5032        }
5033      }
5034      required_values {
5035        key: "front_camera_stream_usecase_supported"
5036        value {
5037          bool_value: true
5038        }
5039      }
5040    }
5041  }
5042  specs {
5043    key: 34
5044    value {
5045      mpc: MEDIA_PERFORMANCE_CLASS_14
5046      specification: "same"
5047      required_values {
5048        key: "rear_camera_stream_usecase_supported"
5049        value {
5050          bool_value: true
5051        }
5052      }
5053      required_values {
5054        key: "front_camera_stream_usecase_supported"
5055        value {
5056          bool_value: true
5057        }
5058      }
5059    }
5060  }
5061  specs {
5062    key: 35
5063    value {
5064      mpc: MEDIA_PERFORMANCE_CLASS_15
5065      specification: "same"
5066      required_values {
5067        key: "rear_camera_stream_usecase_supported"
5068        value {
5069          bool_value: true
5070        }
5071      }
5072      required_values {
5073        key: "front_camera_stream_usecase_supported"
5074        value {
5075          bool_value: true
5076        }
5077      }
5078    }
5079  }
5080}
5081requirements {
5082  id: "7.5/H-1-15"
5083  name: "Camera Night Mode Extension"
5084  description: "Night mode extension"
5085  test_configs: {
5086    key: ""
5087    value: {
5088      description: "Default test config"
5089      proto_field_number: 63
5090    }
5091  }
5092  measurements: {
5093    key: "rear_camera2_extension_night_supported"
5094    value: {
5095      description: "Is the rear Camera2 night mode extension supported"
5096      measurement_type: MEASUREMENT_TYPE_BOOL
5097      comparison: COMPARISON_EQUAL
5098      proto_field_number: 3
5099    }
5100  }
5101  measurements: {
5102    key: "front_camera2_extension_night_supported"
5103    value: {
5104      description: "Is the front Camera2 night mode extension supported"
5105      measurement_type: MEASUREMENT_TYPE_BOOL
5106      comparison: COMPARISON_EQUAL
5107      proto_field_number: 4
5108    }
5109  }
5110  measurements: {
5111    key: "rear_camerax_extension_night_supported"
5112    value: {
5113      description: "Is the rear CameraX night mode extension supported"
5114      measurement_type: MEASUREMENT_TYPE_BOOL
5115      comparison: COMPARISON_EQUAL
5116      proto_field_number: 5
5117    }
5118  }
5119  measurements: {
5120    key: "front_camerax_extension_night_supported"
5121    value: {
5122      description: "Is the front CameraX night mode extension supported"
5123      measurement_type: MEASUREMENT_TYPE_BOOL
5124      comparison: COMPARISON_EQUAL
5125      proto_field_number: 6
5126    }
5127  }
5128  specs {
5129    key: 34
5130    value {
5131      mpc: MEDIA_PERFORMANCE_CLASS_14
5132      specification: "MUST support Night mode extensions via both CameraX and Camera2 extensions for primary cameras."
5133      required_values {
5134        key: "rear_camera2_extension_night_supported"
5135        value {
5136          bool_value: true
5137        }
5138      }
5139      required_values {
5140        key: "front_camera2_extension_night_supported"
5141        value {
5142          bool_value: true
5143        }
5144      }
5145      required_values {
5146        key: "rear_camerax_extension_night_supported"
5147        value {
5148          bool_value: true
5149        }
5150      }
5151      required_values {
5152        key: "front_camerax_extension_night_supported"
5153        value {
5154          bool_value: true
5155        }
5156      }
5157    }
5158  }
5159  specs {
5160    key: 35
5161    value {
5162      mpc: MEDIA_PERFORMANCE_CLASS_15
5163      specification: "same"
5164      required_values {
5165        key: "rear_camera2_extension_night_supported"
5166        value {
5167          bool_value: true
5168        }
5169      }
5170      required_values {
5171        key: "front_camera2_extension_night_supported"
5172        value {
5173          bool_value: true
5174        }
5175      }
5176      required_values {
5177        key: "rear_camerax_extension_night_supported"
5178        value {
5179          bool_value: true
5180        }
5181      }
5182      required_values {
5183        key: "front_camerax_extension_night_supported"
5184        value {
5185          bool_value: true
5186        }
5187      }
5188    }
5189  }
5190}
5191requirements {
5192  id: "7.5/H-1-16"
5193  name: "Camera Dynamic Range 10 Bit"
5194  description: "Support for 10 bit dynamic range for primary cameras"
5195  test_configs: {
5196    key: ""
5197    value: {
5198      description: "Default test config"
5199      proto_field_number: 64
5200    }
5201  }
5202  measurements: {
5203    key: "rear_camera_dynamic_tenbits_supported"
5204    value: {
5205      description: "Is the rear primary camera 10 bit dynamic range supported"
5206      measurement_type: MEASUREMENT_TYPE_BOOL
5207      comparison: COMPARISON_EQUAL
5208      proto_field_number: 3
5209    }
5210  }
5211  measurements: {
5212    key: "front_camera_dynamic_tenbits_supported"
5213    value: {
5214      description: "Is the front primary camera 10 bit dynamic range supported"
5215      measurement_type: MEASUREMENT_TYPE_BOOL
5216      comparison: COMPARISON_EQUAL
5217      proto_field_number: 4
5218    }
5219  }
5220  specs {
5221    key: 34
5222    value {
5223      mpc: MEDIA_PERFORMANCE_CLASS_14
5224      specification: "MUST support DYNAMIC_RANGE_TEN_BIT capability for the primary cameras."
5225      required_values {
5226        key: "rear_camera_dynamic_tenbits_supported"
5227        value {
5228          bool_value: true
5229        }
5230      }
5231      required_values {
5232        key: "front_camera_dynamic_tenbits_supported"
5233        value {
5234          bool_value: true
5235        }
5236      }
5237    }
5238  }
5239  specs {
5240    key: 35
5241    value {
5242      mpc: MEDIA_PERFORMANCE_CLASS_15
5243      specification: "same"
5244      required_values {
5245        key: "rear_camera_dynamic_tenbits_supported"
5246        value {
5247          bool_value: true
5248        }
5249      }
5250      required_values {
5251        key: "front_camera_dynamic_tenbits_supported"
5252        value {
5253          bool_value: true
5254        }
5255      }
5256    }
5257  }
5258}
5259requirements {
5260  id: "7.5/H-1-17"
5261  name: "Camera Face Detection"
5262  description: "Face detection scene mode"
5263  test_configs: {
5264    key: ""
5265    value: {
5266      description: "Default test config"
5267      proto_field_number: 65
5268    }
5269  }
5270  measurements: {
5271    key: "rear_camera_face_detection_supported"
5272    value: {
5273      description: "Is the rear primary camera face detection supported"
5274      measurement_type: MEASUREMENT_TYPE_BOOL
5275      comparison: COMPARISON_EQUAL
5276      proto_field_number: 3
5277    }
5278  }
5279  measurements: {
5280    key: "front_camera_face_detection_supported"
5281    value: {
5282      description: "Is the front primary camera face detection supported"
5283      measurement_type: MEASUREMENT_TYPE_BOOL
5284      comparison: COMPARISON_EQUAL
5285      proto_field_number: 4
5286    }
5287  }
5288  specs {
5289    key: 34
5290    value {
5291      mpc: MEDIA_PERFORMANCE_CLASS_14
5292      specification: "MUST support face detection capability (STATISTICS_FACE_DETECT_MODE_SIMPLE or STATISTICS_FACE_DETECT_MODE_FULL) for the primary cameras."
5293      required_values {
5294        key: "rear_camera_face_detection_supported"
5295        value {
5296          bool_value: true
5297        }
5298      }
5299      required_values {
5300        key: "front_camera_face_detection_supported"
5301        value {
5302          bool_value: true
5303        }
5304      }
5305    }
5306  }
5307  specs {
5308    key: 35
5309    value {
5310      mpc: MEDIA_PERFORMANCE_CLASS_15
5311      specification: "same"
5312      required_values {
5313        key: "rear_camera_face_detection_supported"
5314        value {
5315          bool_value: true
5316        }
5317      }
5318      required_values {
5319        key: "front_camera_face_detection_supported"
5320        value {
5321          bool_value: true
5322        }
5323      }
5324    }
5325  }
5326}
5327requirements {
5328  id: "7.5/H-1-18"
5329  name: "Camera JPEG R"
5330  description: "JPEG R support for primary cameras"
5331  test_configs: {
5332    key: ""
5333    value: {
5334      description: "Default test config"
5335      proto_field_number: 66
5336    }
5337  }
5338  measurements: {
5339    key: "primary_rear_camera_jpeg_r_supported"
5340    value: {
5341      description: "Is the rear primary camera JPEG R supported"
5342      measurement_type: MEASUREMENT_TYPE_BOOL
5343      comparison: COMPARISON_EQUAL
5344      proto_field_number: 3
5345    }
5346  }
5347  measurements: {
5348    key: "primary_front_camera_jpeg_r_supported"
5349    value: {
5350      description: "Is the front primary camera JPEG R supported"
5351      measurement_type: MEASUREMENT_TYPE_BOOL
5352      comparison: COMPARISON_EQUAL
5353      proto_field_number: 4
5354    }
5355  }
5356  specs {
5357    key: 35
5358    value {
5359      mpc: MEDIA_PERFORMANCE_CLASS_15
5360      specification: "MUST support JPEG_R for the primary rear and primary front cameras."
5361      required_values {
5362        key: "primary_rear_camera_jpeg_r_supported"
5363        value {
5364          bool_value: true
5365        }
5366      }
5367      required_values {
5368        key: "primary_front_camera_jpeg_r_supported"
5369        value {
5370          bool_value: true
5371        }
5372      }
5373    }
5374  }
5375}
5376requirements {
5377  id: "7.5/H-1-19"
5378  name: "Camera Video Preview Stabilization"
5379  description: "Support for video preview stabilization for primary cameras"
5380  test_configs: {
5381    key: ""
5382    value: {
5383      description: "Default test config"
5384      proto_field_number: 67
5385    }
5386  }
5387  measurements: {
5388    key: "primary_camera_hlg_combination_supported"
5389    value: {
5390      description: "Is the rear primary camera stabilization supported"
5391      measurement_type: MEASUREMENT_TYPE_BOOL
5392      comparison: COMPARISON_EQUAL
5393      proto_field_number: 3
5394    }
5395  }
5396  specs {
5397    key: 35
5398    value {
5399      mpc: MEDIA_PERFORMANCE_CLASS_15
5400      specification: "MUST support CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION for 1080p HLG10 preview with maximum-size 16:9 aspect ratio JPEG, and for 720p HLG10 preview with maximum-size 16:9 aspect ratio JPEG stream combinations for the primary rear camera."
5401      required_values {
5402        key: "primary_camera_hlg_combination_supported"
5403        value {
5404          bool_value: true
5405        }
5406      }
5407    }
5408  }
5409}
5410requirements {
5411  id: "7.5/H-1-20"
5412  name: "Camera Ultra HDR"
5413  description: "Ultra HDR support for primary camera"
5414  is_non_cts_test: true
5415  test_configs: {
5416    key: ""
5417    value: {
5418      description: "Default test config"
5419      proto_field_number: 68
5420    }
5421  }
5422  measurements: {
5423    key: "rear_camera_ultra_hdr_supported"
5424    value: {
5425      description: "Is the rear primary camera Ultra HDR supported"
5426      measurement_type: MEASUREMENT_TYPE_BOOL
5427      comparison: COMPARISON_EQUAL
5428      proto_field_number: 3
5429    }
5430  }
5431  measurements: {
5432    key: "front_camera_ultra_hdr_supported"
5433    value: {
5434      description: "Is the front primary camera Ultra HDR supported"
5435      measurement_type: MEASUREMENT_TYPE_BOOL
5436      comparison: COMPARISON_EQUAL
5437      proto_field_number: 4
5438    }
5439  }
5440  specs {
5441    key: 35
5442    value {
5443      mpc: MEDIA_PERFORMANCE_CLASS_15
5444      specification: "MUST by default output JPEG_R for the primary rear and primary front cameras in the native camera app."
5445      required_values {
5446        key: "rear_camera_ultra_hdr_supported"
5447        value {
5448          bool_value: true
5449        }
5450      }
5451      required_values {
5452        key: "front_camera_ultra_hdr_supported"
5453        value {
5454          bool_value: true
5455        }
5456      }
5457    }
5458  }
5459}
5460requirements {
5461  id: "7.1.1.1/H-1-1"
5462  name: "Screen Resolution R"
5463  description: "- Screen resolution"
5464  test_configs: {
5465    key: ""
5466    value: {
5467      description: "Default test config"
5468      proto_field_number: 69
5469    }
5470  }
5471  measurements {
5472    key: "long_resolution_pixels"
5473    value: {
5474      id: "long_resolution_pixels"
5475      description: "The screen resolution width in pixels (longer of the two dimensions)."
5476      measurement_type: MEASUREMENT_TYPE_INT
5477      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5478      proto_field_number: 3
5479    }
5480  }
5481  measurements {
5482    key: "short_resolution_pixels"
5483    value: {
5484      id: "short_resolution_pixels"
5485      description: "The screen resolution height in pixels (shorter of the two dimensions)."
5486      measurement_type: MEASUREMENT_TYPE_INT
5487      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5488      proto_field_number: 4
5489    }
5490  }
5491  specs {
5492    key: 30
5493    value {
5494      mpc: MEDIA_PERFORMANCE_CLASS_11
5495      specification: "MUST have screen resolution of at least 1080p."
5496      required_values: {
5497        key: "long_resolution_pixels"
5498        value: {
5499          int_value: 1920
5500        }
5501      }
5502      required_values: {
5503        key: "short_resolution_pixels"
5504        value: {
5505          int_value: 1080
5506        }
5507      }
5508    }
5509  }
5510}
5511requirements {
5512  id: "7.1.1.1/H-2-1"
5513  name: "Screen Resolution"
5514  description: "- Screen resolution"
5515  test_configs: {
5516    key: ""
5517    value: {
5518      description: "Default test config"
5519      proto_field_number: 70
5520    }
5521  }
5522  measurements {
5523    key: "long_resolution_pixels"
5524    value: {
5525      id: "long_resolution_pixels"
5526      description: "The screen resolution width in pixels (longer of the two dimensions)."
5527      measurement_type: MEASUREMENT_TYPE_INT
5528      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5529      proto_field_number: 3
5530    }
5531  }
5532  measurements {
5533    key: "short_resolution_pixels"
5534    value: {
5535      id: "short_resolution_pixels"
5536      description: "The screen resolution height in pixels (shorter of the two dimensions)."
5537      measurement_type: MEASUREMENT_TYPE_INT
5538      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5539      proto_field_number: 4
5540    }
5541  }
5542  specs {
5543    key: 31
5544    value {
5545      mpc: MEDIA_PERFORMANCE_CLASS_12
5546      specification: "MUST have screen resolution of at least 1080p."
5547      required_values: {
5548        key: "long_resolution_pixels"
5549        value: {
5550          int_value: 1920
5551        }
5552      }
5553      required_values: {
5554        key: "short_resolution_pixels"
5555        value: {
5556          int_value: 1080
5557        }
5558      }
5559    }
5560  }
5561  specs {
5562    key: 33
5563    value {
5564      mpc: MEDIA_PERFORMANCE_CLASS_13
5565      specification: "same"
5566      required_values: {
5567        key: "long_resolution_pixels"
5568        value: {
5569          int_value: 1920
5570        }
5571      }
5572      required_values: {
5573        key: "short_resolution_pixels"
5574        value: {
5575          int_value: 1080
5576        }
5577      }
5578    }
5579  }
5580  specs {
5581    key: 34
5582    value {
5583      mpc: MEDIA_PERFORMANCE_CLASS_14
5584      specification: "same"
5585      required_values: {
5586        key: "long_resolution_pixels"
5587        value: {
5588          int_value: 1920
5589        }
5590      }
5591      required_values: {
5592        key: "short_resolution_pixels"
5593        value: {
5594          int_value: 1080
5595        }
5596      }
5597    }
5598  }
5599  specs {
5600    key: 35
5601    value {
5602      mpc: MEDIA_PERFORMANCE_CLASS_15
5603      specification: "same"
5604      required_values: {
5605        key: "long_resolution_pixels"
5606        value: {
5607          int_value: 1920
5608        }
5609      }
5610      required_values: {
5611        key: "short_resolution_pixels"
5612        value: {
5613          int_value: 1080
5614        }
5615      }
5616    }
5617  }
5618}
5619requirements {
5620  id: "7.1.1.3/H-1-1"
5621  name: "Screen Density R"
5622  description: "- Screen density"
5623  test_configs: {
5624    key: ""
5625    value: {
5626      description: "Default test config"
5627      proto_field_number: 71
5628    }
5629  }
5630  measurements {
5631    key: "display_density_dpi"
5632    value: {
5633      id: "display_density_dpi"
5634      description: "The screen display density in pixels per square inch."
5635      measurement_type: MEASUREMENT_TYPE_INT
5636      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5637      proto_field_number: 3
5638    }
5639  }
5640  specs {
5641    key: 30
5642    value {
5643      mpc: MEDIA_PERFORMANCE_CLASS_11
5644      specification: "MUST have screen density of at least 400 dpi."
5645      required_values: {
5646        key: "display_density_dpi"
5647        value: {
5648          int_value: 400
5649        }
5650      }
5651    }
5652  }
5653}
5654requirements {
5655  id: "7.1.1.3/H-2-1"
5656  name: "Screen Density"
5657  description: "- Screen density"
5658  test_configs: {
5659    key: ""
5660    value: {
5661      description: "Default test config"
5662      proto_field_number: 72
5663    }
5664  }
5665  measurements {
5666    key: "display_density_dpi"
5667    value: {
5668      id: "display_density_dpi"
5669      description: "The screen display density in pixels per square inch."
5670      measurement_type: MEASUREMENT_TYPE_INT
5671      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5672      proto_field_number: 3
5673    }
5674  }
5675  specs {
5676    key: 31
5677    value {
5678      mpc: MEDIA_PERFORMANCE_CLASS_12
5679      specification: "MUST have screen density of at least 400 dpi."
5680      required_values: {
5681        key: "display_density_dpi"
5682        value: {
5683          int_value: 400
5684        }
5685      }
5686    }
5687  }
5688  specs {
5689    key: 33
5690    value {
5691      mpc: MEDIA_PERFORMANCE_CLASS_13
5692      specification: "same"
5693      required_values: {
5694        key: "display_density_dpi"
5695        value: {
5696          int_value: 400
5697        }
5698      }
5699    }
5700  }
5701  specs {
5702    key: 34
5703    value {
5704      mpc: MEDIA_PERFORMANCE_CLASS_14
5705      specification: "same"
5706      required_values: {
5707        key: "display_density_dpi"
5708        value: {
5709          int_value: 400
5710        }
5711      }
5712    }
5713  }
5714  specs {
5715    key: 35
5716    value {
5717      mpc: MEDIA_PERFORMANCE_CLASS_15
5718      specification: "same"
5719      required_values: {
5720        key: "display_density_dpi"
5721        value: {
5722          int_value: 400
5723        }
5724      }
5725    }
5726  }
5727}
5728requirements {
5729  id: "7.1.1.3/H-3-1"
5730  name: "HDR display"
5731  description: "HDR display"
5732  test_configs: {
5733    key: ""
5734    value: {
5735      description: "Default test config"
5736      proto_field_number: 73
5737    }
5738  }
5739  measurements: {
5740    key: "is_hdr"
5741    value: {
5742      id: "is_hdr"
5743      description: "Does the display support HDR"
5744      measurement_type: MEASUREMENT_TYPE_BOOL
5745      comparison: COMPARISON_EQUAL
5746      proto_field_number: 3
5747    }
5748  }
5749  measurements: {
5750    key: "display_luminance_nits"
5751    value: {
5752      id: "display_luminance_nits"
5753      description: "The display luminance in nits."
5754      measurement_type: MEASUREMENT_TYPE_DOUBLE
5755      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5756      proto_field_number: 4
5757    }
5758  }
5759  specs {
5760    key: 35
5761    value {
5762      mpc: MEDIA_PERFORMANCE_CLASS_INVALID
5763      specification: "MUST have a HDR display supporting at least 1000 nits"
5764      required_values: {
5765        key: "display_luminance_nits"
5766        value: {
5767          double_value: 1000
5768        }
5769      }
5770      required_values: {
5771        key: "is_hdr"
5772        value: {
5773          bool_value: true
5774        }
5775      }
5776    }
5777  }
5778}
5779requirements {
5780  id: "7.1.4/H-1-1"
5781  description: "- Hardware overlays"
5782}
5783requirements {
5784  id: "7.6.1/H-1-1"
5785  name: "Android 11 Memory"
5786  description: "Minimum memory available to the kernel as reported by ActivityManager.MemoryInfo.totalMemory"
5787  test_configs: {
5788    key: ""
5789    value: {
5790      description: "Default test config"
5791      proto_field_number: 74
5792    }
5793  }
5794  measurements: {
5795    key: "physical_memory_mb"
5796    value: {
5797      description: "Physical memory in MiB as reported by ActivityManager.MemeryInfo.totalMemory."
5798      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5799      measurement_type: MEASUREMENT_TYPE_LONG
5800      proto_field_number: 3
5801    }
5802  }
5803  specs {
5804    key: 30
5805    value {
5806      mpc: MEDIA_PERFORMANCE_CLASS_11
5807      specification: "MUST have at least 6 GB of physical memory."
5808      required_values: {
5809        key: "physical_memory_mb"
5810        value: {
5811          long_value: 5120
5812        }
5813      }
5814    }
5815  }
5816}
5817requirements {
5818  id: "7.6.1/H-2-1"
5819  name: "Memory"
5820  description: "Minimum memory available to the kernel as reported by ActivityManager.MemoryInfo.totalMemory"
5821  test_configs: {
5822    key: ""
5823    value: {
5824      description: "Default test config"
5825      proto_field_number: 75
5826    }
5827  }
5828  measurements: {
5829    key: "physical_memory_mb"
5830    value: {
5831      description: "Physical memory in MiB as reported by ActivityManager.MemoryInfo.totalMemory."
5832      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5833      measurement_type: MEASUREMENT_TYPE_LONG
5834      proto_field_number: 3
5835    }
5836  }
5837  specs {
5838    key: 31
5839    value {
5840      mpc: MEDIA_PERFORMANCE_CLASS_12
5841      specification: "MUST have at least 6 GB of physical memory."
5842      required_values: {
5843        key: "physical_memory_mb"
5844        value: {
5845          long_value: 5120
5846        }
5847      }
5848    }
5849  }
5850  specs {
5851    key: 33
5852    value {
5853      mpc: MEDIA_PERFORMANCE_CLASS_13
5854      specification: "MUST have at least 8 GB of physical memory."
5855      required_values: {
5856        key: "physical_memory_mb"
5857        value: {
5858          long_value: 6800
5859        }
5860      }
5861    }
5862  }
5863  specs {
5864    key: 34
5865    value {
5866      mpc: MEDIA_PERFORMANCE_CLASS_14
5867      specification: "MUST have at least 8 GB of physical memory."
5868      required_values: {
5869        key: "physical_memory_mb"
5870        value: {
5871          long_value: 6800
5872        }
5873      }
5874    }
5875  }
5876  specs {
5877    key: 35
5878    value {
5879      mpc: MEDIA_PERFORMANCE_CLASS_15
5880      specification: "MUST have at least 8 GB of physical memory, with at least 6.64 GB available to the kernel as reported by android.app.ActivityManager.MemoryInfo."
5881      required_values: {
5882        key: "physical_memory_mb"
5883        value: {
5884          long_value: 6800
5885        }
5886      }
5887    }
5888  }
5889}
5890requirements {
5891  id: "8.2/H-1-1"
5892  name: "Sequential write"
5893  description: "Sequential write"
5894  test_configs: {
5895    key: ""
5896    value: {
5897      description: "Default test config"
5898      proto_field_number: 76
5899    }
5900  }
5901  measurements: {
5902    key: "filesystem_io_rate_mbps"
5903    value: {
5904      id: "filesystem_io_rate_mbps"
5905      description: "Sequential write performance in MB per second."
5906      measurement_type: MEASUREMENT_TYPE_DOUBLE
5907      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5908      proto_field_number: 3
5909    }
5910  }
5911  specs {
5912    key: 30
5913    value {
5914      mpc: MEDIA_PERFORMANCE_CLASS_11
5915      specification: "MUST ensure a sequential write performance of at least 100 MB/s."
5916      required_values: {
5917        key: "filesystem_io_rate_mbps"
5918        value: {
5919          double_value: 100
5920        }
5921      }
5922    }
5923  }
5924  specs {
5925    key: 33
5926    value {
5927      mpc: MEDIA_PERFORMANCE_CLASS_13
5928      specification: "MUST ensure a sequential write performance of at least 125 MB/s."
5929      required_values: {
5930        key: "filesystem_io_rate_mbps"
5931        value: {
5932          double_value: 125
5933        }
5934      }
5935    }
5936  }
5937  specs {
5938    key: 34
5939    value {
5940      mpc: MEDIA_PERFORMANCE_CLASS_14
5941      specification: "MUST ensure a sequential write performance of at least 150 MB/s."
5942      required_values: {
5943        key: "filesystem_io_rate_mbps"
5944        value: {
5945          double_value: 150
5946        }
5947      }
5948    }
5949  }
5950  specs {
5951    key: 35
5952    value {
5953      mpc: MEDIA_PERFORMANCE_CLASS_15
5954      specification: "MUST ensure a sequential write performance of at least 150&nbsp;MB/s."
5955      required_values: {
5956        key: "filesystem_io_rate_mbps"
5957        value: {
5958          double_value: 150
5959        }
5960      }
5961    }
5962  }
5963}
5964requirements {
5965  id: "8.2/H-2-1"
5966  name: "Sequential write S"
5967  description: "Sequential write"
5968  test_configs: {
5969    key: ""
5970    value: {
5971      description: "Default test config"
5972      proto_field_number: 77
5973    }
5974  }
5975  measurements: {
5976    key: "filesystem_io_rate_mbps"
5977    value: {
5978      id: "filesystem_io_rate_mbps"
5979      description: "Sequential write performance in MB per second."
5980      measurement_type: MEASUREMENT_TYPE_DOUBLE
5981      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
5982      proto_field_number: 3
5983    }
5984  }
5985  specs {
5986    key: 31
5987    value {
5988      mpc: MEDIA_PERFORMANCE_CLASS_12
5989      specification: "MUST ensure a sequential write performance of at least 125 MB/s."
5990      required_values: {
5991        key: "filesystem_io_rate_mbps"
5992        value: {
5993          double_value: 125
5994        }
5995      }
5996    }
5997  }
5998}
5999requirements {
6000  id: "8.2/H-1-2"
6001  name: "Random Write"
6002  description: "- Random write"
6003  test_configs: {
6004    key: ""
6005    value: {
6006      description: "Default test config"
6007      proto_field_number: 78
6008    }
6009  }
6010  measurements: {
6011    key: "filesystem_io_rate_mbps"
6012    value: {
6013      id: "filesystem_io_rate_mbps"
6014      description: "Random write performance in MB per second."
6015      measurement_type: MEASUREMENT_TYPE_DOUBLE
6016      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6017      proto_field_number: 3
6018    }
6019  }
6020  specs {
6021    key: 30
6022    value {
6023      mpc: MEDIA_PERFORMANCE_CLASS_11
6024      specification: "MUST ensure a random write performance of at least 10 MB/s."
6025      required_values: {
6026        key: "filesystem_io_rate_mbps"
6027        value: {
6028          double_value: 10
6029        }
6030      }
6031    }
6032  }
6033  specs {
6034    key: 33
6035    value {
6036      mpc: MEDIA_PERFORMANCE_CLASS_13
6037      specification: "same"
6038      required_values: {
6039        key: "filesystem_io_rate_mbps"
6040        value: {
6041          double_value: 10
6042        }
6043      }
6044    }
6045  }
6046  specs {
6047    key: 34
6048    value {
6049      mpc: MEDIA_PERFORMANCE_CLASS_14
6050      specification: "same"
6051      required_values: {
6052        key: "filesystem_io_rate_mbps"
6053        value: {
6054          double_value: 10
6055        }
6056      }
6057    }
6058  }
6059  specs {
6060    key: 35
6061    value {
6062      mpc: MEDIA_PERFORMANCE_CLASS_15
6063      specification: "same"
6064      required_values: {
6065        key: "filesystem_io_rate_mbps"
6066        value: {
6067          double_value: 10
6068        }
6069      }
6070    }
6071  }
6072}
6073requirements {
6074  id: "8.2/H-2-2"
6075  name: "Random Write S"
6076  description: "- Random write"
6077  test_configs: {
6078    key: ""
6079    value: {
6080      description: "Default test config"
6081      proto_field_number: 79
6082    }
6083  }
6084  measurements: {
6085    key: "filesystem_io_rate_mbps"
6086    value: {
6087      id: "filesystem_io_rate_mbps"
6088      description: "Random write performance in MB per second."
6089      measurement_type: MEASUREMENT_TYPE_DOUBLE
6090      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6091      proto_field_number: 3
6092    }
6093  }
6094  specs {
6095    key: 31
6096    value {
6097      mpc: MEDIA_PERFORMANCE_CLASS_12
6098      specification: "MUST ensure a random write performance of at least 10 MB/s."
6099      required_values: {
6100        key: "filesystem_io_rate_mbps"
6101        value: {
6102          double_value: 10
6103        }
6104      }
6105    }
6106  }
6107}
6108requirements {
6109  id: "8.2/H-1-3"
6110  name: "Sequential Read"
6111  description: "- Sequential read"
6112  test_configs: {
6113    key: ""
6114    value: {
6115      description: "Default test config"
6116      proto_field_number: 80
6117    }
6118  }
6119  measurements: {
6120    key: "filesystem_io_rate_mbps"
6121    value: {
6122      id: "filesystem_io_rate_mbps"
6123      description: "Sequential read performance in MB per second."
6124      measurement_type: MEASUREMENT_TYPE_DOUBLE
6125      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6126      proto_field_number: 3
6127    }
6128  }
6129  specs {
6130    key: 30
6131    value {
6132      mpc: MEDIA_PERFORMANCE_CLASS_11
6133      specification: "MUST ensure a sequential read performance of at least 200 MB/s."
6134      required_values: {
6135        key: "filesystem_io_rate_mbps"
6136        value: {
6137          double_value: 200
6138        }
6139      }
6140    }
6141  }
6142  specs {
6143    key: 33
6144    value {
6145      mpc: MEDIA_PERFORMANCE_CLASS_13
6146      specification: "MUST ensure a sequential read performance of at least 250 MB/s."
6147      required_values: {
6148        key: "filesystem_io_rate_mbps"
6149        value: {
6150          double_value: 250
6151        }
6152      }
6153    }
6154  }
6155  specs {
6156    key: 34
6157    value {
6158      mpc: MEDIA_PERFORMANCE_CLASS_14
6159      specification: "same"
6160      required_values: {
6161        key: "filesystem_io_rate_mbps"
6162        value: {
6163          double_value: 250
6164        }
6165      }
6166    }
6167  }
6168  specs {
6169    key: 35
6170    value {
6171      mpc: MEDIA_PERFORMANCE_CLASS_15
6172      specification: "same"
6173      required_values: {
6174        key: "filesystem_io_rate_mbps"
6175        value: {
6176          double_value: 250
6177        }
6178      }
6179    }
6180  }
6181}
6182requirements {
6183  id: "8.2/H-2-3"
6184  name: "Sequential Read S"
6185  description: "- Sequential read"
6186  test_configs: {
6187    key: ""
6188    value: {
6189      description: "Default test config"
6190      proto_field_number: 81
6191    }
6192  }
6193  measurements: {
6194    key: "filesystem_io_rate_mbps"
6195    value: {
6196      id: "filesystem_io_rate_mbps"
6197      description: "Sequential read performance in MB per second."
6198      measurement_type: MEASUREMENT_TYPE_DOUBLE
6199      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6200      proto_field_number: 3
6201    }
6202  }
6203  specs {
6204    key: 31
6205    value {
6206      mpc: MEDIA_PERFORMANCE_CLASS_12
6207      specification: "MUST ensure a sequential read performance of at least 250 MB/s."
6208      required_values: {
6209        key: "filesystem_io_rate_mbps"
6210        value: {
6211          double_value: 250
6212        }
6213      }
6214    }
6215  }
6216}
6217requirements {
6218  id: "8.2/H-1-4"
6219  name: "Random Read"
6220  description: "- Random read"
6221  test_configs: {
6222    key: ""
6223    value: {
6224      description: "Default test config"
6225      proto_field_number: 82
6226    }
6227  }
6228  measurements: {
6229    key: "filesystem_io_rate_mbps"
6230    value: {
6231      id: "filesystem_io_rate_mbps"
6232      description: "Random read performance in MB per second."
6233      measurement_type: MEASUREMENT_TYPE_DOUBLE
6234      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6235      proto_field_number: 3
6236    }
6237  }
6238  specs {
6239    key: 30
6240    value {
6241      mpc: MEDIA_PERFORMANCE_CLASS_11
6242      specification: "MUST ensure a random read performance of at least 25 MB/s."
6243      required_values: {
6244        key: "filesystem_io_rate_mbps"
6245        value: {
6246          double_value: 25
6247        }
6248      }
6249    }
6250  }
6251  specs {
6252    key: 33
6253    value {
6254      mpc: MEDIA_PERFORMANCE_CLASS_13
6255      specification: "MUST ensure a random read performance of at least 40 MB/s."
6256      required_values: {
6257        key: "filesystem_io_rate_mbps"
6258        value: {
6259          double_value: 40
6260        }
6261      }
6262    }
6263  }
6264  specs {
6265    key: 34
6266    value {
6267      mpc: MEDIA_PERFORMANCE_CLASS_14
6268      specification: "MUST ensure a random read performance of at least 100 MB/s."
6269      required_values: {
6270        key: "filesystem_io_rate_mbps"
6271        value: {
6272          double_value: 100
6273        }
6274      }
6275    }
6276  }
6277  specs {
6278    key: 35
6279    value {
6280      mpc: MEDIA_PERFORMANCE_CLASS_15
6281      specification: "same"
6282      required_values: {
6283        key: "filesystem_io_rate_mbps"
6284        value: {
6285          double_value: 100
6286        }
6287      }
6288    }
6289  }
6290}
6291requirements {
6292  id: "8.2/H-2-4"
6293  name: "Random Read S"
6294  description: "- Random read"
6295  test_configs: {
6296    key: ""
6297    value: {
6298      description: "Default test config"
6299      proto_field_number: 83
6300    }
6301  }
6302  measurements: {
6303    key: "filesystem_io_rate_mbps"
6304    value: {
6305      id: "filesystem_io_rate_mbps"
6306      description: "Random read performance in MB per second."
6307      measurement_type: MEASUREMENT_TYPE_DOUBLE
6308      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6309      proto_field_number: 3
6310    }
6311  }
6312  specs {
6313    key: 31
6314    value {
6315      mpc: MEDIA_PERFORMANCE_CLASS_12
6316      specification: "MUST ensure a random read performance of at least 40 MB/s."
6317      required_values: {
6318        key: "filesystem_io_rate_mbps"
6319        value: {
6320          double_value: 40
6321        }
6322      }
6323    }
6324  }
6325}
6326requirements {
6327  id: "8.2/H-1-5"
6328  description: "- Read and write performance"
6329}
6330requirements {
6331  id: "7.1.4.1/H-1-2"
6332  name: "EGL"
6333  description: "Supports EGL_IMG_context_priority and EGL_EXT_protected_content extensions."
6334  test_configs: {
6335    key: ""
6336    value: {
6337      description: "Default test config"
6338      proto_field_number: 84
6339    }
6340  }
6341  measurements: {
6342    key: "egl_img_context_priority"
6343    value: {
6344      id: "egl_img_context_priority"
6345      description: "Is EGL_IMG_context_priority supported."
6346      measurement_type: MEASUREMENT_TYPE_BOOL
6347      comparison: COMPARISON_EQUAL
6348      proto_field_number: 3
6349    }
6350  }
6351  measurements: {
6352    key: "egl_ext_protected_content"
6353    value: {
6354      id: "egl_ext_protected_content"
6355      description: "Is EGL_EXT_protected_content supported."
6356      measurement_type: MEASUREMENT_TYPE_BOOL
6357      comparison: COMPARISON_EQUAL
6358      proto_field_number: 4
6359    }
6360  }
6361  specs {
6362    key: 35
6363    value {
6364      mpc: MEDIA_PERFORMANCE_CLASS_15
6365      specification: "MUST support the EGL_IMG_context_priority and EGL_EXT_protected_content extensions."
6366      required_values: {
6367        key: "egl_img_context_priority"
6368        value: {
6369          bool_value: true
6370        }
6371      }
6372      required_values: {
6373        key: "egl_ext_protected_content"
6374        value: {
6375          bool_value: true
6376        }
6377      }
6378    }
6379  }
6380}
6381requirements {
6382  id: "7.1.4.1/H-1-3"
6383  name: "Vulkan"
6384  description: "Must support vulkan physical device protected memory and global priority."
6385  test_configs: {
6386    key: ""
6387    value: {
6388      description: "Default test config"
6389      proto_field_number: 85
6390    }
6391  }
6392  measurements: {
6393    key: "vk_ext_global_priority"
6394    value: {
6395      description: "Is VK_EXT_global_priority supported."
6396      measurement_type: MEASUREMENT_TYPE_BOOL
6397      comparison: COMPARISON_EQUAL
6398      proto_field_number: 3
6399    }
6400  }
6401  measurements: {
6402    key: "vk_physical_device_protected_memory"
6403    value: {
6404      description: "Is VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory supported."
6405      measurement_type: MEASUREMENT_TYPE_BOOL
6406      comparison: COMPARISON_EQUAL
6407      proto_field_number: 4
6408    }
6409  }
6410  measurements: {
6411    key: "vk_non_cpu_device_count"
6412    value: {
6413      description: "The count of non VK_PHYSICAL_DEVICE_TYPE_CPU Vulcan Devices."
6414      measurement_type: MEASUREMENT_TYPE_INT
6415      comparison: COMPARISON_GREATER_THAN_OR_EQUAL
6416      proto_field_number: 5
6417    }
6418  }
6419  specs {
6420    key: 35
6421    value {
6422      mpc: MEDIA_PERFORMANCE_CLASS_15
6423      specification: "MUST support VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory and VK_KHR_global_priority."
6424      required_values: [
6425        {
6426          key: "vk_ext_global_priority"
6427          value: {
6428            bool_value: true
6429
6430          }
6431        },
6432        {
6433          key: "vk_physical_device_protected_memory"
6434          value: {
6435            bool_value: true
6436          }
6437        },
6438        {
6439          key: "vk_non_cpu_device_count"
6440          value: {
6441            int_value: 1
6442          }
6443        }
6444      ]
6445    }
6446  }
6447}
6448