• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## 5.1\. Media Codecs
2
3### 5.1.1\. Audio Encoding
4
5See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
6
7If device implementations declare `android.hardware.microphone`,
8they MUST support encoding the following audio formats and make them available
9to third-party apps:
10
11*    [C-1-1] PCM/WAVE
12*    [C-1-2] FLAC
13*    [C-1-3] Opus
14
15All audio encoders MUST support:
16
17*  [C-3-1] PCM 16-bit native byte order audio frames via the [`android.media.MediaCodec`](
18https://developer.android.com/reference/android/media/MediaCodec.html#raw-audio-buffers)
19API.
20
21
22### 5.1.2\. Audio Decoding
23
24See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
25
26
27If device implementations declare support for the
28`android.hardware.audio.output` feature, they must support decoding the
29following audio formats:
30
31*    [C-1-1] MPEG-4 AAC Profile (AAC LC)
32*    [C-1-2] MPEG-4 HE AAC Profile (AAC+)
33*    [C-1-3] MPEG-4 HE AACv2 Profile (enhanced AAC+)
34*    [C-1-4] AAC ELD (enhanced low delay AAC)
35*    [C-1-11] xHE-AAC (ISO/IEC 23003-3 Extended HE AAC Profile, which includes
36             the USAC Baseline Profile, and ISO/IEC 23003-4 Dynamic Range
37             Control Profile)
38*    [C-1-5] FLAC
39*    [C-1-6] MP3
40*    [C-1-7] MIDI
41*    [C-1-8] Vorbis
42*    [C-1-9] PCM/WAVE including high-resolution audio
43formats up to 24 bits, 192 kHz sample rate, and 8 channels.
44Note that this requirement is for decoding only, and that a device
45is permitted to downsample and downmix during the playback phase.
46*    [C-1-10] Opus
47
48If device implementations support the decoding of AAC input buffers of
49multichannel streams (i.e. more than two channels) to PCM through the default
50AAC audio decoder in the `android.media.MediaCodec` API, the following MUST be
51supported:
52
53*    [C-2-1] Decoding MUST be performed without downmixing (e.g. a 5.0 AAC
54stream must be decoded to five channels of PCM, a 5.1 AAC stream must be decoded
55to six channels of PCM).
56*    [C-2-2] Dynamic range metadata MUST be as defined in "Dynamic Range Control
57(DRC)" in ISO/IEC 14496-3, and the `android.media.MediaFormat` DRC keys to
58configure the dynamic range-related behaviors of the audio decoder. The
59AAC DRC keys were introduced in API 21, and are:
60`KEY_AAC_DRC_ATTENUATION_FACTOR`, `KEY_AAC_DRC_BOOST_FACTOR`,
61`KEY_AAC_DRC_HEAVY_COMPRESSION`, `KEY_AAC_DRC_TARGET_REFERENCE_LEVEL` and
62`KEY_AAC_ENCODED_TARGET_LEVEL`.
63*    [SR] It is STRONGLY RECOMMENDED that requirements C-2-1 and C-2-2 above are
64satisfied by all AAC audio decoders.
65
66When decoding USAC audio, MPEG-D (ISO/IEC 23003-4):
67
68*    [C-3-1] Loudness and DRC metadata MUST be interpreted and applied
69according to MPEG-D DRC Dynamic Range Control Profile Level 1.
70*    [C-3-2] The decoder MUST behave according to the configuration
71set with the following `android.media.MediaFormat` keys:
72`KEY_AAC_DRC_TARGET_REFERENCE_LEVEL` and `KEY_AAC_DRC_EFFECT_TYPE`.
73
74MPEG-4 AAC, HE AAC, and HE AACv2 profile decoders:
75
76*    MAY support loudness and dynamic range control using ISO/IEC 23003-4
77Dynamic Range Control Profile.
78
79If ISO/IEC 23003-4 is supported and if both ISO/IEC 23003-4 and
80ISO/IEC 14496-3 metadata are present in a decoded bitstream, then:
81
82*    ISO/IEC 23003-4 metadata SHALL take precedence.
83
84All audio decoders MUST support outputting:
85
86*  [C-6-1] PCM 16-bit native byte order audio frames via the [`android.media.MediaCodec`](
87https://developer.android.com/reference/android/media/MediaCodec.html#raw-audio-buffers)
88API.
89
90### 5.1.3\. Audio Codecs Details
91
92<table>
93 <tr>
94    <th>Format/Codec</th>
95    <th>Details</th>
96    <th>File Types/Container Formats to be supported</th>
97 </tr>
98 <tr>
99    <td>MPEG-4 AAC Profile<br />(AAC LC)</td>
100    <td>Support for mono/stereo/5.0/5.1 content with standard
101    sampling rates from 8 to 48 kHz.</td>
102    <td>
103    <ul>
104    <li class="table_list">3GPP (.3gp)</li>
105    <li class="table_list">MPEG-4 (.mp4, .m4a)</li>
106    <li class="table_list">ADTS raw AAC (.aac, ADIF not supported)</li>
107    <li class="table_list">MPEG-TS (.ts, not seekable, decode only)</li>
108    <li class="table_list">Matroska (.mkv, decode only)</li></ul>
109    </td>
110 </tr>
111 <tr>
112    <td>MPEG-4 HE AAC Profile (AAC+)</td>
113    <td>Support for mono/stereo/5.0/5.1 content with standard
114    sampling rates from 16 to 48 kHz.</td>
115    <td>
116    <ul>
117    <li class="table_list">3GPP (.3gp)</li>
118    <li class="table_list">MPEG-4 (.mp4, .m4a)</li></ul>
119    </td>
120 </tr>
121 <tr>
122    <td>MPEG-4 HE AACv2<br />
123
124Profile (enhanced AAC+)</td>
125    <td>Support for mono/stereo/5.0/5.1 content with standard
126    sampling rates from 16 to 48 kHz.</td>
127    <td>
128    <ul>
129    <li class="table_list">3GPP (.3gp)</li>
130    <li class="table_list">MPEG-4 (.mp4, .m4a)</li></ul>
131    </td>
132 </tr>
133 <tr>
134    <td>AAC ELD (enhanced low delay AAC)</td>
135    <td>Support for mono/stereo content with standard sampling rates from 16 to
136    48 kHz.</td>
137    <td>
138    <ul>
139    <li class="table_list">3GPP (.3gp)</li>
140    <li class="table_list">MPEG-4 (.mp4, .m4a)</li></ul>
141    </td>
142 </tr>
143 <tr>
144    <td>USAC</td>
145    <td>Support for mono/stereo content with standard sampling rates from 7.35
146    to 48 kHz.</td>
147    <td>
148    MPEG-4 (.mp4, .m4a)
149    </td>
150 </tr>
151 <tr>
152    <td>AMR-NB</td>
153    <td>4.75 to 12.2 kbps sampled @ 8 kHz</td>
154    <td>3GPP (.3gp)</td>
155 </tr>
156 <tr>
157    <td>AMR-WB</td>
158    <td>9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16 kHz, as defined at
159      <a href="https://www.loc.gov/preservation/digital/formats/fdd/fdd000255.shtml">
160      AMR-WB, Adaptive Multi-Rate - Wideband Speech Codec</a></td>
161    <td>3GPP (.3gp)</td>
162 </tr>
163 <tr>
164    <td>FLAC</td>
165    <td>For both encoder and decoder: at least Mono and Stereo modes MUST be
166      supported. Sample rates up to 192 kHz MUST be supported; 16-bit and 24-bit
167      resolution MUST be supported. FLAC 24-bit audio data handling MUST be
168      available with floating point audio configuration.</td>
169    <td>
170    <ul>
171    <li class="table_list">FLAC (.flac)</li>
172    <li class="table_list">MPEG-4 (.mp4, .m4a, decode only)</li>
173    <li class="table_list">Matroska (.mkv, decode only)</li></ul>
174    </td>
175 </tr>
176 <tr>
177    <td>MP3</td>
178    <td>Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR)</td>
179    <td>
180    <ul>
181    <li class="table_list">MP3 (.mp3)</li>
182    <li class="table_list">MPEG-4 (.mp4, .m4a, decode only)</li>
183    <li class="table_list">Matroska (.mkv, decode only)</li></td>
184 </tr>
185 <tr>
186    <td>MIDI</td>
187    <td>MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for
188    ringtone formats RTTTL/RTX, OTA, and iMelody</td>
189    <td><ul>
190    <li class="table_list">Type 0 and 1 (.mid, .xmf, .mxmf)</li>
191    <li class="table_list">RTTTL/RTX (.rtttl, .rtx)</li>
192    <li class="table_list">iMelody (.imy)</li></ul></td>
193 </tr>
194 <tr>
195    <td>Vorbis</td>
196    <td></td>
197    <td>
198    <ul>
199    <li class="table_list">Ogg (.ogg)</li>
200    <li class="table_list">MPEG-4 (.mp4, .m4a, decode only)</li>
201    <li class="table_list">Matroska (.mkv)</li>
202    <li class="table_list">Webm (.webm)</li></ul></td>
203 </tr>
204 <tr>
205    <td>PCM/WAVE</td>
206    <td>PCM codec MUST support 16-bit linear PCM and 16-bit float. WAVE
207      extractor must support 16-bit, 24-bit, 32-bit linear PCM and 32-bit float
208      (rates up to limit of hardware). Sampling rates MUST be supported from
209      8 kHz to 192 kHz.</td>
210    <td>WAVE (.wav)</td>
211 </tr>
212 <tr>
213    <td>Opus</td>
214    <td>Decoding: Support for mono, stereo, 5.0 and 5.1 content
215      with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz.
216      <br>
217      Encoding: Support for mono and stereo content
218      with sampling rates of 8000, 12000, 16000, 24000, and 48000 Hz.
219    </td>
220    <td>
221    <ul>
222    <li class="table_list">Ogg (.ogg)</li>
223    <li class="table_list">MPEG-4 (.mp4, .m4a, decode only)</li>
224    <li class="table_list">Matroska (.mkv)</li>
225    <li class="table_list">Webm (.webm)</li></ul></td>
226 </tr>
227</table>
228
229### 5.1.4\. Image Encoding
230
231See more details in [5.1.6. Image Codecs Details](#5_1_6_image_codecs_details).
232
233Device implementations MUST support encoding the following image encoding:
234
235*    [C-0-1] JPEG
236*    [C-0-2] PNG
237*    [C-0-3] WebP
238
239If device implementations support HEIC encoding via `android.media.MediaCodec`
240for media type [`MIMETYPE_IMAGE_ANDROID_HEIC`](
241https://developer.android.com/reference/android/media/MediaFormat.html#MIMETYPE_IMAGE_ANDROID_HEIC),
242they:
243
244*    [C-1-1] MUST provide a hardware-accelerated HEVC encoder codec that
245supports [`BITRATE_MODE_CQ`](https://developer.android.com/reference/android/media/MediaCodecInfo.EncoderCapabilities.html#BITRATE_MODE_CQ)
246bitrate control mode, [`HEVCProfileMainStill`](
247https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel.html#HEVCProfileMainStill)
248profile and 512 x 512 px frame size.
249
250### 5.1.5\. Image Decoding
251
252See more details in [5.1.6. Image Codecs Details](#5_1_6_image_codecs_details).
253
254Device implementations MUST support decoding the following image encoding:
255
256*    [C-0-1] JPEG
257*    [C-0-2] GIF
258*    [C-0-3] PNG
259*    [C-0-4] BMP
260*    [C-0-5] WebP
261*    [C-0-6] Raw
262*    [C-0-7] HEIF (HEIC)
263
264Image decoders that support a high bit-depth format (9+ bits per channel)
265
266*   [C-1-1] MUST support outputting an 8-bit equivalent format if requested by
267the application, for example, via the [`ARGB_8888`](
268https://developer.android.com/reference/android/graphics/Bitmap.Config.html#ARGB_8888)
269config of `android.graphics.Bitmap`.
270
271### 5.1.6\. Image Codecs Details
272
273<table>
274 <tr>
275    <th>Format/Codec</th>
276    <th>Details</th>
277    <th>Supported File Types/Container Formats</th>
278 </tr>
279 <tr>
280    <td>JPEG</td>
281    <td>Base+progressive</td>
282    <td>JPEG (.jpg)</td>
283 </tr>
284 <tr>
285    <td>GIF</td>
286    <td></td>
287    <td>GIF (.gif)</td>
288 </tr>
289 <tr>
290    <td>PNG</td>
291    <td></td>
292    <td>PNG (.png)</td>
293 </tr>
294 <tr>
295    <td>BMP</td>
296    <td></td>
297    <td>BMP (.bmp)</td>
298 </tr>
299 <tr>
300    <td>WebP</td>
301    <td></td>
302    <td>WebP (.webp)</td>
303 </tr>
304 <tr>
305    <td>Raw</td>
306    <td></td>
307    <td>ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf),
308        PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)</td>
309 </tr>
310 <tr>
311    <td>HEIF</td>
312    <td>Image, Image collection, Image sequence</td>
313    <td>HEIF (.heif), HEIC (.heic)</td>
314 </tr>
315</table>
316
317Image encoder and decoders exposed through the [MediaCodec](
318https://developer.android.com/reference/android/media/MediaCodec) API
319
320*   [C-1-1] MUST support YUV420 8:8:8 flexible color
321format (`COLOR_FormatYUV420Flexible`) through [`CodecCapabilities`](
322https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities).
323
324*   [SR] STRONGLY RECOMMENDED to support RGB888 color format for input Surface
325mode.
326
327*   [C-1-3] MUST support at least one of a planar or semiplanar
328YUV420 8:8:8 color format: `COLOR_FormatYUV420PackedPlanar` (equivalent to
329`COLOR_FormatYUV420Planar`) or `COLOR_FormatYUV420PackedSemiPlanar` (equivalent
330to `COLOR_FormatYUV420SemiPlanar`). They are STRONGLY RECOMMENDED to support
331both.
332
333### 5.1.7\. Video Codecs
334
335*   For acceptable quality of web video streaming and video-conference
336services, device implementations SHOULD use a hardware VP8 codec that meets the
337[requirements](http://www.webmproject.org/hardware/rtc-coding-requirements/).
338
339If device implementations include a video decoder or encoder:
340
341*   [C-1-1] Video codecs MUST support output and input bytebuffer sizes that
342accommodate the largest feasible compressed and uncompressed frame as dictated
343by the standard and configuration but also not overallocate.
344
345*   [C-1-2] Video encoders and decoders MUST support YUV420 8:8:8 flexible color
346formats (`COLOR_FormatYUV420Flexible`) through [`CodecCapabilities`](
347https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities).
348
349*   [C-1-3] Video encoders and decoders MUST support at least one of a planar or
350semiplanar YUV420 8:8:8 color format: `COLOR_FormatYUV420PackedPlanar`
351(equivalent to `COLOR_FormatYUV420Planar`) or
352`COLOR_FormatYUV420PackedSemiPlanar` (equivalent to `COLOR_FormatYUV420SemiPlanar`).
353They are STRONGLY RECOMMENDED to support both.
354
355*   [SR] Video encoders and decoders are STRONGLY RECOMMENDED to support
356at least one of a hardware optimized planar or semiplanar YUV420 8:8:8 color
357format (YV12, NV12, NV21 or equivalent vendor optimized format.)
358
359*   [C-1-5] Video decoders that support a high bit-depth format
360(9+ bits per channel) MUST support outputting an 8-bit equivalent format if
361requested by the application. This MUST be reflected by supporting an
362YUV420 8:8:8 color format via `android.media.MediaCodecInfo`.
363
364If device implementations advertise HDR profile support through
365[`Display.HdrCapabilities`](
366https://developer.android.com/reference/android/view/Display.HdrCapabilities.html),
367they:
368
369*   [C-2-1] MUST support HDR static metadata parsing and handling.
370
371If device implementations advertise intra refresh support through
372`FEATURE_IntraRefresh` in the [`MediaCodecInfo.CodecCapabilities`](
373https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#FEATURE_IntraRefresh)
374class, they:
375
376*   [C-3-1] MUST support the refresh periods in the range of 10 - 60 frames and
377accurately operate within 20% of configured refresh period.
378
379Unless the application specifies otherwise using the [`KEY_COLOR_FORMAT`](
380https://developer.android.com/reference/android/media/MediaFormat.html#KEY_COLOR_FORMAT)
381format key, video decoder implementations:
382
383*   [C-4-1] MUST default to the color format optimized for hardware display
384if configured using Surface output.
385*   [C-4-2] MUST default to a YUV420 8:8:8 color format optimized for CPU
386reading if configured to not use Surface output.
387
388### 5.1.8\. Video Codecs List
389
390
391<table>
392 <tr>
393    <th>Format/Codec</th>
394    <th>Details</th>
395    <th>File Types/Container Formats to be supported</th>
396 </tr>
397 <tr>
398    <td>H.263</td>
399    <td></td>
400    <td><ul>
401    <li class="table_list">3GPP (.3gp)</li>
402    <li class="table_list">MPEG-4 (.mp4)</li>
403    <li class="table_list">Matroska (.mkv, decode only)</li></ul></td>
404 </tr>
405 <tr>
406    <td>H.264 AVC</td>
407    <td>See <a href="#5_2_video_encoding">section 5.2 </a>and
408    <a href="#5_3_video_decoding">5.3</a> for details</td>
409    <td><ul>
410    <li class="table_list">3GPP (.3gp)</li>
411    <li class="table_list">MPEG-4 (.mp4)</li>
412    <li class="table_list">MPEG-2 TS (.ts, not seekable)</li>
413    <li class="table_list">Matroska (.mkv, decode only)</li></ul></td>
414 </tr>
415 <tr>
416    <td>H.265 HEVC</td>
417    <td>See <a href="#5_3_video_decoding">section 5.3</a> for details</td>
418    <td><ul>
419    <li class="table_list">MPEG-4 (.mp4)</li>
420    <li class="table_list">Matroska (.mkv, decode only)</li></ul></td>
421 </tr>
422 <tr>
423    <td>MPEG-2</td>
424    <td>Main Profile</td>
425    <td><ul>
426    <li class="table_list">MPEG2-TS (.ts, not seekable)</li>
427    <li class="table_list">MPEG-4 (.mp4, decode only)</li>
428    <li class="table_list">Matroska (.mkv, decode only)</li></ul></td>
429 </tr>
430 <tr>
431    <td>MPEG-4 SP</td>
432    <td></td>
433    <td><ul>
434    <li class="table_list">3GPP (.3gp)</li>
435    <li class="table_list">MPEG-4 (.mp4)</li>
436    <li class="table_list">Matroska (.mkv, decode only)</li></ul></td>
437 </tr>
438 <tr>
439    <td>VP8</td>
440    <td>See <a href="#5_2_video_encoding">section 5.2</a> and
441    <a href="#5_3_video_decoding">5.3</a> for details</td>
442    <td><ul>
443    <li class="table_list"><a href="http://www.webmproject.org/">WebM
444    (.webm)</a></li>
445    <li class="table_list">Matroska (.mkv)</li></ul>
446    </td>
447 </tr>
448 <tr>
449    <td>VP9</td>
450    <td>See <a href="#5_3_video_decoding">section 5.3</a> for details</td>
451    <td><ul>
452    <li class="table_list"><a href="http://www.webmproject.org/">WebM
453    (.webm)</a></li>
454    <li class="table_list">Matroska (.mkv)</li></ul>
455    </td>
456 </tr>
457</table>
458
459
460### 5.1.9\. Media Codec Security
461
462Device implementations MUST ensure compliance with media codec security features
463as described below.
464
465Android includes support for OMX, a cross-platform multimedia acceleration API,
466as well as Codec 2.0, a low-overhead multimedia acceleration API.
467
468If device implementations support multimedia, they:
469
470*   [C-1-1] MUST provide support for media codecs either via OMX or Codec 2.0
471APIs (or both) as in the Android Open Source Project and not disable or
472circumvent the security protections. This specifically does not mean that every
473codec MUST use either the OMX or Codec 2.0 API, only that support for at least
474one of these APIs MUST be available, and support for the available APIs MUST
475include the security protections present.
476*   [C-SR] Are STRONGLY RECOMMENDED to include support for Codec 2.0 API.
477
478If device implementations do not support the Codec 2.0 API, they:
479
480*   [C-2-1] MUST include the corresponding OMX software codec from the Android
481Open Source Project (if it is available) for each media format and type
482(encoder or decoder) supported by the device.
483*   [C-2-2] Codecs that have names starting with "OMX.google." MUST be based
484on their Android Open Source Project source code.
485*   [C-SR]  Are STRONGLY RECOMMENDED that the OMX software codecs run in a codec
486process that does not have access to hardware drivers other than memory mappers.
487
488If device implementations support Codec 2.0 API, they:
489
490*   [C-3-1] MUST include the corresponding Codec 2.0 software codec from the
491Android Open Source Project (if it is available) for each media format and type
492(encoder or decoder) supported by the device.
493*   [C-3-2] MUST house the Codec 2.0 software codecs in the software codec
494process as provided in the Android Open Source Project to make it possible
495to more narrowly grant access to software codecs.
496*   [C-3-3] Codecs that have names starting with "c2.android." MUST be based
497on their Android Open Source Project source code.
498
499### 5.1.10\. Media Codec Characterization
500
501If device implementations support media codecs, they:
502
503*  [C-1-1] MUST return correct values of media codec characterization via the
504   [`MediaCodecInfo`](
505   https://developer.android.com/reference/android/media/MediaCodecInfo)
506   API.
507
508In particular:
509
510*  [C-1-2] Codecs with names starting with "OMX." MUST use the OMX APIs
511and have names that conform to OMX IL naming guidelines.
512*  [C-1-3] Codecs with names starting with "c2." MUST use the Codec 2.0 API and
513have names that conform to Codec 2.0 naming guidelines for Android.
514*  [C-1-4] Codecs with names starting with "OMX.google." or "c2.android." MUST
515NOT be characterized as vendor or as hardware-accelerated.
516*  [C-1-5] Codecs that run in a codec process (vendor or system) that have
517access to hardware drivers other than memory allocators and mappers MUST NOT
518be characterized as software-only.
519*  [C-1-6] Codecs not present in the Android Open Source Project or not based
520on the source code in that project MUST be characterized as vendor.
521*  [C-1-7] Codecs that utilize hardware acceleration MUST be characterized
522as hardware accelerated.
523*  [C-1-8] Codec names MUST NOT be misleading. For example, codecs named
524"decoders" MUST support decoding, and those named "encoders" MUST support
525encoding. Codecs with names containing media formats MUST support those
526formats.
527
528If device implementations support video codecs:
529
530*  [C-2-1] All video codecs MUST publish achievable frame rate data for the
531following sizes if supported by the codec:
532
533<table>
534  <tr>
535    <th></th>
536    <th>SD (low quality)</th>
537    <th>SD (high quality)</th>
538    <th>HD 720p</th>
539    <th>HD 1080p</th>
540    <th>UHD</th>
541  </tr>
542  <tr>
543    <th>Video resolution</th>
544    <td><ul>
545    <li class="table_list">176 x 144 px (H263, MPEG2, MPEG4)</li>
546    <li class="table_list">352 x 288 px (MPEG4 encoder, H263, MPEG2)</li>
547    <li class="table_list">320 x 180 px (VP8, VP8)</li>
548    <li class="table_list">320 x 240 px (other)</li></ul>
549    </td>
550    <td><ul>
551    <li class="table_list">704 x 576 px (H263)</li>
552    <li class="table_list">640 x 360 px (VP8, VP9)</li>
553    <li class="table_list">640 x 480 px (MPEG4 encoder)</li>
554    <li class="table_list">720 x 480 px (other)</li></ul>
555    </td>
556    <td><ul>
557    <li class="table_list">1408 x 1152 px (H263)</li>
558    <li class="table_list">1280 x 720 px (other)</li></ul>
559    </td>
560    <td>1920 x 1080 px (other than MPEG4)</td>
561    <td>3840 x 2160 px (HEVC, VP9)</td>
562  </tr>
563</table>
564
565*  [C-2-2] Video codecs that are characterized as hardware accelerated MUST
566publish performance points information. They MUST each list all supported
567standard performance points (listed in [`PerformancePoint`](
568https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities)
569API), unless they are covered by another supported standard performance point.
570*  Additionally they SHOULD publish extended performance points if they
571support sustained video performance other than one of the standard ones listed.
572