## 5.3\. Video Decoding If device implementations support VP8, VP9, H.264, or H.265 codecs, they: * [C-1-1] MUST support dynamic video resolution and frame rate switching through the standard Android APIs within the same stream for all VP8, VP9, H.264, and H.265 codecs in real time and up to the maximum resolution supported by each codec on the device. ### 5.3.1\. MPEG-2 If device implementations support MPEG-2 decoders, they: * [C-1-1] MUST support the Main Profile High Level. ### 5.3.2\. H.263 If device implementations support H.263 decoders, they: * [C-1-1] MUST support Baseline Profile Level 30 and Level 45. ### 5.3.3\. MPEG-4 If device implementations with MPEG-4 decoders, they: * [C-1-1] MUST support Simple Profile Level 3. ### 5.3.4\. H.264 If device implementations support H.264 decoders, they: * [C-1-1] MUST support Main Profile Level 3.1 and Baseline Profile. Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL. * [C-1-2] MUST be capable of decoding videos with the SD (Standard Definition) profiles listed in the following table and encoded with the Baseline Profile and Main Profile Level 3.1 (including 720p30). * SHOULD be capable of decoding videos with the HD (High Definition) profiles as indicated in the following table. If the height that is reported by the `Display.getSupportedModes()` method is equal or greater than the video resolution, device implementations: * [C-2-1] MUST support the HD 720p video decoding profiles in the following table. * [C-2-2] MUST support the HD 1080p video decoding profiles in the following table.
SD (Low quality) SD (High quality) HD 720p HD 1080p
Video resolution 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px
Video frame rate 30 fps 30 fps 60 fps 30 fps (60 fpsTelevision)
Video bitrate 800 Kbps 2 Mbps 8 Mbps 20 Mbps
### 5.3.5\. H.265 (HEVC) If device implementations support H.265 codec, they: * [C-1-1] MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles as indicated in the following table. * SHOULD support the HD decoding profiles as indicated in the following table. * [C-1-2] MUST support the HD decoding profiles as indicated in the following table if there is a hardware decoder. If the height that is reported by the `Display.getSupportedModes()` method is equal to or greater than the video resolution, then: * [C-2-1] Device implementations MUST support at least one of H.265 or VP9 decoding of 720, 1080 and UHD profiles.
SD (Low quality) SD (High quality) HD 720p HD 1080p UHD
Video resolution 352 x 288 px 720 x 480 px 1280 x 720 px 1920 x 1080 px 3840 x 2160 px
Video frame rate 30 fps 30 fps 30 fps 30/60 fps (60 fpsTelevision with H.265 hardware decoding) 60 fps
Video bitrate 600 Kbps 1.6 Mbps 4 Mbps 5 Mbps 20 Mbps
If device implementations claim to support an HDR Profile through the Media APIs: * [C-3-1] Device implementations MUST accept the required HDR metadata from the application, as well as support extracting and outputting the required HDR metadata from the bitstream and/or container. * [C-3-2] Device implementations MUST properly display HDR content on the device screen or on a standard video output port (e.g., HDMI). ### 5.3.6\. VP8 If device implementations support VP8 codec, they: * [C-1-1] MUST support the SD decoding profiles in the following table. * SHOULD use a hardware VP8 codec that meets the [requirements]("http://www.webmproject.org/hardware/rtc-coding-requirements/"). * SHOULD support the HD decoding profiles in the following table. If the height as reported by the `Display.getSupportedModes()` method is equal or greater than the video resolution, then: * [C-2-1] Device implementations MUST support 720p profiles in the following table. * [C-2-2] Device implementations MUST support 1080p profiles in the following table.
SD (Low quality) SD (High quality) HD 720p HD 1080p
Video resolution 320 x 180 px 640 x 360 px 1280 x 720 px 1920 x 1080 px
Video frame rate 30 fps 30 fps 30 fps (60 fpsTelevision) 30 (60 fpsTelevision)
Video bitrate 800 Kbps 2 Mbps 8 Mbps 20 Mbps
### 5.3.7\. VP9 If device implementations support VP9 codec, they: * [C-1-1] MUST support the SD video decoding profiles as indicated in the following table. * SHOULD support the HD decoding profiles as indicated in the following table. If device implementations support VP9 codec and a hardware decoder: * [C-2-1] MUST support the HD decoding profiles as indicated in the following table. If the height that is reported by the `Display.getSupportedModes()` method is equal to or greater than the video resolution, then: * [C-3-1] Device implementations MUST support at least one of VP9 or H.265 decoding of the 720, 1080 and UHD profiles.
SD (Low quality) SD (High quality) HD 720p HD 1080p UHD
Video resolution 320 x 180 px 640 x 360 px 1280 x 720 px 1920 x 1080 px 3840 x 2160 px
Video frame rate 30 fps 30 fps 30 fps 30 fps (60 fpsTelevision with VP9 hardware decoding) 60 fps
Video bitrate 600 Kbps 1.6 Mbps 4 Mbps 5 Mbps 20 Mbps
If device implementations claim to support `VP9Profile2` or `VP9Profile3` through the ['CodecProfileLevel']( https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel) media APIs: * Support for 12-bit format is OPTIONAL. If device implementations claim to support an HDR Profile (`VP9Profile2HDR`, `VP9Profile2HDR10Plus`, `VP9Profile3HDR`, `VP9Profile3HDR10Plus`) through the media APIs: * [C-4-1] Device implementations MUST accept the required HDR metadata ([`KEY_HDR_STATIC_INFO`]( https://developer.android.com/reference/android/media/MediaFormat.html#KEY_HDR_STATIC_INFO) for all HDR profiles, as well as ['KEY_HDR10_PLUS_INFO']( https://developer.android.com/reference/android/media/MediaFormat.html#KEY_HDR10_PLUS_INFO) for HDR10Plus profiles) from the application. They also MUST support extracting and outputting the required HDR metadata from the bitstream and/or container. * [C-4-2] Device implementations MUST properly display HDR content on the device screen or on a standard video output port (e.g., HDMI). ## 5.3.8\. Dolby Vision If device implementations declare support for the Dolby Vision decoder through [`HDR_TYPE_DOLBY_VISION`]( https://developer.android.com/reference/android/view/Display.HdrCapabilities.html#HDR_TYPE_DOLBY_VISION) , they: * [C-1-1] MUST provide a Dolby Vision-capable extractor. * [C-1-2] MUST properly display Dolby Vision content on the device screen or on a standard video output port (e.g., HDMI). * [C-1-3] MUST set the track index of backward-compatible base-layer(s) (if present) to be the same as the combined Dolby Vision layer's track index. ### 5.3.9\. AV1 If device implementations support AV1 codec, they: * [C-1-1] MUST support Profile 0 including 10-bit content.